কোন এমএস-ডস ফাইলের নামের জন্য অক্ষরগুলি অবৈধ?


16

আমি x86-16 সমাবেশ ভাষায় একটি ফাইলের নাম I / O পদ্ধতি লিখছি। এটি কীবোর্ড থেকে আটটি অক্ষর (দীর্ঘ ফাইলের নামগুলি সমর্থন করার দরকার নেই) লাগে এবং সেগুলি অন স্ক্রীন পাঠ্য ইনপুট ক্ষেত্রে প্রিন্ট করে।

এই মুহুর্তে আমি সংখ্যা, বড় / ছোট-বড় অক্ষর, আন্ডারস্কোর এবং হাইফেনগুলি অনুমতি দিচ্ছি allowing

আমি সমস্ত আইনী প্রতীকগুলিকে অনুমতি দিতে চাই, তবে নিষিদ্ধ অক্ষরের একটি অফিসিয়াল তালিকা আমি খুঁজে পাচ্ছি না। সাধারণ জ্ঞান আমাকে বলে যে স্ল্যাশগুলি অবৈধ, তবে আমার যদি ধারণা করতে হয় তবে আমি বলব যে প্লাস চরিত্রটি বৈধ। (সম্পাদনা করুন: এটি নয়!)

আমি ইতিমধ্যে পিরিয়ড চরিত্রটিকে উপেক্ষা করছি যেহেতু আমার কোডটি সময়কাল এবং ফাইল এক্সটেনশন স্বয়ংক্রিয়ভাবে পরিচালনা করে।


17
আপনি রেট্রোকম্পিউটিংকেও দরকারী বলে মনে করতে পারেন।
বব

উইন্ডোজে একটি ফোল্ডার তৈরি করার চেষ্টা করুন এবং একটি '?' নামে. একটি টুলটিপ আপনাকে জানায় কোন অক্ষর নিষিদ্ধ। এটি আপনাকে একটি সূচনা দেয়:) ...
মিক্স্সিফায়ড

@ মিক্স্সিফায়ড যা কাজ করবে না কারণ উইন্ডোজটিতে অনুমোদিত অক্ষরের সেটটি অনেক বড়। উদাহরণস্বরূপ +,;[], স্পেস এবং a-zউইন্ডোজটিতে অনুমোদিত তবে ডস নয়। এক্সপ্লোরার আমাকে ত্রুটি দেয় "একটি ফাইলের নামের মধ্যে নিম্নোক্ত অক্ষরগুলির \ / : * ? " < > |
একটিও

1
@ ফুক্লভ সে কারণেই আমি বলেছিলাম যে 'এটি আপনাকে একটি সূচনা দেয়' এবং কেন এটি একটি মন্তব্য এবং উত্তর নয়।
মিক্স্সিফয়েড

সমস্ত এমএস-ডস চিহ্ন কেন? অন্যান্য পুরানো ওএস বিধিগুলি কেন বিবেচনা করবেন না?
jpmc26

উত্তর:


30

একটি সংক্ষিপ্ত সারাংশ উইকিপিডিয়ায় পাওয়া যাবে :

ডস ফাইলনামগুলির জন্য আইনি অক্ষরগুলির মধ্যে নিম্নলিখিতটি অন্তর্ভুক্ত রয়েছে:

  • আপার কেস লেটারস A-Z
  • নম্বর 0-9
  • স্পেস (যদিও বেসের নাম বা এক্সটেনশনের ফাঁকে ফাঁকে ফাঁকে চিহ্নিত করা হয় এবং ফাইলের একটি অংশ নয়, ডেস কমান্ড লাইনে ব্যবহার করার জন্য ফাঁকা জায়গাগুলির ফাইল নামও অবশ্যই আবদ্ধ থাকতে হবে, এবং যদি ডস হয় কমান্ড প্রোগ্রামগতভাবে নির্মিত হয়, ডস কমান্ড নির্মাণের সময় প্রোগ্রামের মধ্যে ভেরিয়েবল হিসাবে দেখা গেলে ফাইলের নামটি অবশ্যই চতুর্মুখী উক্তিতে আবদ্ধ থাকতে হবে।)
  • ! # $ % & ' ( ) - @ ^ _ ` { } ~
  • মানসমূহ 128-255 (যদিও এনএলএস পরিষেবাদি ডস-এ সক্রিয় রয়েছে, কিছু অক্ষর ছোট হাতের হিসাবে ব্যাখ্যা করা অবৈধ এবং অনুপলব্ধ)

এটি নিম্নলিখিত ASCII অক্ষরগুলি বাদ দেয়:

  • " * + , / : ; < = > ? \ [ ] | [9]
  • উইন্ডোজ / এমএস-ডস-এর কোনও শেল পালানোর অক্ষর নেই
  • .(ইউ + 002 ই। পুরো স্টপ) নাম এবং এক্সটেনশন ক্ষেত্রগুলির মধ্যে, বাদে। এবং .. এন্ট্রি (নীচে দেখুন)
  • ছোট হাতের অক্ষর a- z(FAT12 / FAT16 এ A A Z হিসাবে সঞ্চিত)
  • অক্ষরগুলি 0-31 নিয়ন্ত্রণ করুন
  • মান 127 (দেল) [সন্দেহজনক - আলোচনা]

https://en.wikipedia.org/wiki/8.3_filename#Directory_table

এবং এখানে এমএস-ডস 6 ব্যবহারকারী গাইড আনুষ্ঠানিকভাবে কী বলেছেন

নামকরণ ফাইল এবং ডিরেক্টরি

প্রতিটি ড্রাইভের রুট ডিরেক্টরি বাদে প্রতিটি ফাইল ও ডিরেক্টরিতে অবশ্যই একটি নাম থাকতে হবে। নিম্নলিখিত তালিকা ফাইল এবং ডিরেক্টরি নামকরণের নিয়মের সংক্ষিপ্তসার জানায়। ফাইল এবং ডিরেক্টরি নাম:

  • আটটি অক্ষর পর্যন্ত দীর্ঘ হতে পারে। এছাড়াও, আপনি দীর্ঘ তিনটি অক্ষর পর্যন্ত একটি এক্সটেনশান অন্তর্ভুক্ত করতে পারেন।
  • কেস-সংবেদনশীল নয়। আপনি যখন বড় হাতের অক্ষর বা ছোট হাতের অক্ষরগুলি টাইপ করেন তখন তা ব্যবহার করে না।
  • কেবলমাত্র Z এর মাধ্যমে A অক্ষর, 0 থেকে 9 পর্যন্ত সংখ্যা এবং নিম্নলিখিত বিশেষ অক্ষরগুলি থাকতে পারে: আন্ডারস্কোর ( _), ক্যারেট ( ^), ডলার চিহ্ন ( $), টিল্ড ( ~), বিস্ময় বিন্দু ( !), সংখ্যা চিহ্ন ( #), শতাংশ চিহ্ন ( %), অ্যাম্পারস্যান্ড ( &), হাইফেন ( -), ধনুর্বন্ধনী ( {}), স্বাক্ষরে ( @), একক উদ্ধৃতি চিহ্ন ( `), অ্যাস্টোস্ট্রোফ ( '), এবং প্রথম বন্ধনী ()। অন্য কোনও বিশেষ অক্ষর গ্রহণযোগ্য নয়।
  • স্পেস, কমা, ব্যাকস্ল্যাশ বা পিরিয়ড থাকতে পারে না (পিরিয়ড যা নামটিকে এক্সটেনশন থেকে পৃথক করে) বাদে।
  • একই ডিরেক্টরিতে অন্য কোনও ফাইল বা সাব-ডিরেক্টরিতে নামের অনুরূপ হতে পারে না।

এটি পিসি-ডস from থেকে:

আপনি কোনও ফাইলের জন্য যে নামটি অর্পণ করেছেন তা অবশ্যই নিম্নলিখিত মানদণ্ডগুলি পূরণ করবে:

  • এতে আটটি অক্ষরের বেশি থাকতে পারে।
  • এটিতে Z এর মাধ্যমে A অক্ষর, 0 থেকে 9 নম্বর এবং নিম্নলিখিত বিশেষ অক্ষরগুলি থাকতে পারে:

    _ underscore            ^  caret
    $ dollar sign           ~  tilde
    ! exclamation point     #  number sign
    % percent sign          &  ampersand
    - hyphen                {} braces
    @ at sign               `  single quote
    ' apostrophe            () parentheses
    

দ্রষ্টব্য: অন্য কোনও বিশেষ অক্ষর গ্রহণযোগ্য নয়।

  • নামটিতে ফাঁকা স্থান, কমা, ব্যাকস্ল্যাশ বা পিরিয়ড থাকতে পারে না (নামটি এক্সটেনশন থেকে পৃথক করে এমন সময় ব্যতীত)।
  • নামটি নীচের সংরক্ষিত ফাইলগুলির মধ্যে একটি হতে পারে না: ক্লক $, সিওএন, এউএক্স, সিওএম 1, সিওএম 2, সিওএম 3, সিওএম 4, এলপিটি 1, এলপিটি 2, এলপিটি 3, এলপিটি 4, নুল, এবং পিআরএন।
  • ডিরেক্টরিতে এটি অন্য ফাইলের মতো একই নাম হতে পারে না।

ব্যবহারকারীর গাইড - পিসি ডস 7

নামের প্রথম বাইটটি অবশ্যই 0x20 (স্পেস) হওয়া উচিত নয়। সংক্ষিপ্ত নাম বা এক্সটেনশনগুলি ফাঁকা জায়গায় প্যাড করা হয়। বিশেষ ASCII অক্ষর 0x22 ( "), 0x2a ( *), 0x2b ( +), 0x2c ( ,), 0x2e ( .), 0x2f ( /), 0x3a ( :), 0x3b ( ;), 0x3c ( <), 0x3d ( =), 0x3e ( >), 0x3f ( ?) , 0x5b ( [), 0x5c ( \), 0x5d ( ]), 0x7c ( |) অনুমোদিত নয়।

FAT ফাইল সিস্টেম

আপনি যদি এমএস-ডস 5.0 এও আগ্রহী হন তবে এটি এখানে


11
উল্লেখ্য যে, যদিও তারা শুধুমাত্র বৈধ অক্ষর বিশেষ ফাইলের নামের মূল্য হতে পারে CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, এবং LPT9(দেখুন এছাড়াও অনুমতি নেই এখানে )
থমাস Schremser

3
@ থমাসশ্রেমসার "ব্যবহার করবেন না", "এড়ানো" এবং "প্রস্তাবিত নয়" এটি "অনুমোদিত নয়" এর মতো নয় not
রবিআইআইআই

1
@ রবিআইআই হ্যাঁ তবে তারা "উইন্ডোজ> ডেস্কটপ" ডকুমেন্টেশনের সাথে লিঙ্ক করেছেন, "এমএস-ডস" ডকুমেন্টেশনের সাথে নয়। ডস- এর উইকি বলেছেন, " ডস-এ সংরক্ষিত ডিভাইসের নাম রয়েছে যা বিল্ট-ইন অক্ষরযুক্ত ডিভাইসগুলির দ্বারা দখল করা না থাকায় প্রসার ছাড়াই ফাইলের নাম হিসাবে ব্যবহার করা যায় না"। অন্য কথায়, ডস এবং উইন্ডোজের কয়েকটি সংস্করণে অনুমোদিত নয় এবং উইন্ডোজ অন্যান্য সংস্করণেও প্রস্তাবিত নয়।
কোয়ান্টিক

এটি আকর্ষণীয় যে `কে একক উদ্ধৃতি হিসাবে উল্লেখ করা হয়। আমি সর্বদা এটির ব্যাকটিক এবং একক উদ্ধৃতি হিসাবে '(যা তারা ভুলভাবে বলে না (একটি প্রেরণাদায়ক) ডাকে) শুনেছি।
ale10and

2
@ এলে ১০ ইন্ডার হ্যাঁ আমাকে অবাক করে দিয়েছে। আমি সর্বদা ঘৃণা করেছি যে অনেক লোক এটিকে অ্যাস্টোস্ট্রোফের জন্য (আইমের মতো) বা উদ্ধৃতি শুরুর অংশ হিসাবে ব্যবহার করে। উদাহরণস্বরূপ, জিএনইউ ডকুমেন্টেশন সর্বদা 'এই জাতীয়' লিখেন যা আমার কাছে খুব কুৎসিত এবং কম পাঠযোগ্য
ফুচলভি

12

কঠোরভাবে বলতে গেলে, একজন এমএস / পিসি / ডিআর-ডস অ্যাপ্লিকেশন প্রোগ্রামার হিসাবে আপনাকে এই তথ্যের জন্য অপারেটিং সিস্টেমটি জিজ্ঞাসা করার কথা রয়েছে। AX = 0x6505 সহ INT 0x21 FCHARআপনার দেশ এবং কোড পৃষ্ঠার জন্য তথাকথিত এনএলএস টেবিলটিতে একটি পয়েন্টার দেয় । এই টেবিলটি অক্ষরের একটি ব্যাপ্তি এবং ফাইলের নামগুলি সমাপ্ত করে এমন অক্ষরের একটি আরও সেট তালিকা করে।

তত্ত্বগতভাবে এটি দেশ এবং কোড পৃষ্ঠায় পরিবর্তিত হয়। তবে এটি ওএস / ২ কন্ট্রোল প্রোগ্রাম এপিআইতে আনুষ্ঠানিকভাবে বহন করা হয়নি এবং ফ্রিডোস-এর সমস্ত কোডপেজ এবং দেশগুলিতে 1 টি টেবিল রয়েছে তা প্রমাণ করে যে এটি প্রচলিতভাবে বাস্তবে আক্রমণাত্মক

আরও পড়া


10

আমি এমএস-ডস 3.3 এর জন্য একটি ম্যানুয়ালটিতে এটি পেয়েছি। আমি 6.22 চালাচ্ছি, তবে এটি সম্ভবত এখনও প্রয়োগ হয়। '+' অনুমোদিত হওয়ার বিষয়ে আমি ভুল ছিলাম।

এখানে চিত্র বিবরণ লিখুন


2
দিনের বাইরে থাকা কোনও ম্যানুয়াল উইকিপিডিয়া থেকে বেশি নির্ভরযোগ্য
স্টিয়ার্ট

@ স্টিওয়ার্ট কী গুরুত্বপূর্ণ তা উইকিপিডিয়ায় উদ্ধৃতি, উইকিপিডিয়া নিজেই নয়। যদি সন্দেহ হয় তবে নিবন্ধটির পাদটীকা এবং রেফারেন্সগুলি দেখুন \ @ মাইলিফিসাব্যাগ আমি সবেমাত্র এমএস-ডস 6 ম্যানুয়াল যুক্ত করেছি
ফুক্লভিভি

3

আপনি যদি কেবল ফাইলের নামটি বৈধতা দিতে চান তবে আপনি INT 21H/AH=60H (TRUENAME - CANONICALIZE FILENAME OR PATH)এই পাসওয়ার্ড ফাইলনামের কোলন বা ব্যাকস্ল্যাশ নেই (এটি ড্রাইভ অক্ষর এবং ডিরেক্টরি হিসাবে বিবেচিত হতে পারে) নেই তা নিশ্চিত করার পরে আপনি ব্যবহার করতে পারেন : ফাংশনটি আপনার প্রস্তাবিত ফাইলের নাম নেয় এবং ক্যানোনিকালাইজ করার চেষ্টা করে অক্ষরগুলি বড়হাতে এবং অবৈধ অক্ষরগুলির জন্য এটি পরীক্ষা করে (এটি একটি ড্রাইভ লেটার / সার্ভারের নাম এবং পথও যুক্ত করে))

সিউডোকোডে:

If !(filename contains {"/", "\", ".", ":"})
    Canonicalize filename (INT 21H/AH=60H)
    If !(CF is set) filename is valid
Filename is not valid
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.