سؤال لماذا لا يمكن تسمية مجلد "._." في Windows 7؟


لقد لاحظت أنه ليس من الممكن تسمية مجلد ._. - يحصل اسمه ._ في حين أن. في بعض الأحيان ، يختفي بعد التسمية مباشرة لكنه يظهر مرة أخرى بعد تحديث العرض. يبدو أن Windows يواجه مشكلة في النقاط في نهاية اسم الملف - لماذا هذا؟


73
2018-01-18 20:57


الأصل


الجدير بالذكر هو أنك تعثرت عبر "الاختراق" لبدء اسم ملف مع . في ويندوز. - jpmc26
ThisNameBetterBeAvailable غير مختبرة ، ولكن cd -- -_- قد تعمل. ال -- هي علامة "نهاية الخيارات" الشائعة. - TripeHound
تضمين التغريدة -- على وسائلها الخاصة "هذه هي نهاية الخيارات ، وعلاج أي بداية تبدأ - كقيمة حرفية"فقط اختبرت: mkdir -- -_- و cd -- -_- يعمل كما كنت أتوقع. - TripeHound
بدلا من ذلك، ./-_- يجب أن تعمل كذلك. - glglgl
@ الكسندر في لينكس ، حيث يبدو أن هذا هو المكان الذي ذهبت التعليقات ، ل cd "-_-" يستخدم shell الاقتباسات للتجميع ولكن لا يعاملهم كجزء من الوسيطة؛ انها أخطاء مع invalid option - Izkata


الأجوبة:


يتطلب Windows عادةً أن تحتوي الملفات على أي ملحق أو ملحق لا يقل طوله عن حرف واحد؛ إنه ليس رائعًا باستخدام إضافات ذات طول صفري ، أي أسماء الملفات التي تنتهي بـ .. يمكن أن تحتوي المجلدات أيضًا على إضافات ، ولذلك لا يسمح Windows بإنهاء أسماءها باستخدام .. مصدر من المقالة التي ربطها DavidPostill:

استخدم فترة لفصل اسم الملف الأساسي من الامتداد في اسم الدليل أو الملف.

(من خلال التركيز على ملف.) إذا حاولت إنهاء ملف أو دليل اسمه بنقطة ، يفترض Windows فقط أنك لا تريد أي امتداد ، وبالتالي يزيلها ، حتى إذا قمت بإنشائها باستخدام md في موجه الأوامر.

منطقة الخطر! إذا كنت تريد بالتأكيد أن ينتهي اسم المجلد .، ستحتاج إلى استخدام تسلسل تجاوز الاسم الخام السحري لـ \\?\. في موجه الأوامر ، md \\?\C:\path\to\container\._. سيخلق حقا مجلد يدعى ._.، ولكن الكثير من البرامج ستواجه مشاكل معها ، حتى المستكشف:

._. problems

مثل هذا الدليل لا يمكن إزالته إلا مع rd تليها \\?\ اسم أو إعادة تسميتها باختصار (8.3 ، dir /x) اسم.


123
2018-01-18 21:05



شكرا على إجابتك التفصيلية! :) أعتقد أن هذا سيكون مجلد مثالي لإخفاء الأشياء السرية مثل كلمات المرور داخله ، لأنه يمكنك فقط فتح المجلد إذا قمت بإعادة تسميته أولاً ، وليس الجميع يعرف كيفية إعادة تسميته. - Black
EdwardBlack لن يمنع أي شخص يمكنه قراءة تبادل المكدس (وبالتالي لن يوفر الأمن ضد الأخ الأصغر الافتراضي). الاسم الذي قدمه dir /x يجعل من السهل جدا ، وهناك أوقات أخرى هذا الاسم سهل. - Chris H
FWIW ، يمكن لأدوات سطر الأوامر في Cygwin إنشاء (ومعالجة) مثل هذه الدلائل على Windows 7 ، دون استخدام تسلسل سحري. - Steve Jessop
EdwardBlack كما ذكر كريس H ، فإنه ليس سرا جدا ، لذلك يجب عليك عدم تخزين أي شيء مهم بشكل خاص في مثل هذا المجلد. علاوة على ذلك ، تعد السرية والحماية الرقمية مشكلة تم حلها عدة مرات. يمكنك استخدام أي عدد من أساليب التشفير وبرامج للحفاظ على الأشياء آمنة دون الاعتماد على أسماء المجلدات غامضة. - Kris Harper
Nitpick: على الأقل في 8.3 أيام (لم أحقق ما هو مكتوب على القرص على NTFS) لم تكن مكتوبة الفترة إلى القرص في المقام الأول. تم تقسيم الاسم إلى اسم وامتداد ، وتم تخزينهما بشكل منفصل. عند قراءته أخذ الاسم وإذا كان هناك ملحق أضاف الفترة والتمديد إلى الاسم. وبالتالي لا توجد وسيلة للتعبير عن. في بنية الدليل ، بالطبع فقدت نقطة الزائدة. - Loren Pechtel


يبدو أن ويندوز لديه مشكلة مع النقاط في نهاية اسم الملف؟ لماذا هذا؟

لا تقم بإنهاء اسم ملف أو دليل بمسافة أو فترة. على الرغم من أن نظام الملفات الأساسي قد يدعم مثل هذه الأسماء ، إلا أن واجهة Windows shell وواجهة المستخدم لا تقوم بذلك.

يظهر الرابط المصدر أدناه مزيدًا من التفاصيل حول قواعد التسمية.

مصدر تسمية الملفات والمسارات ومساحات الأسماء


22
2018-01-18 21:04



هذا لا يزال يبدو وكأنه خطأ لي. - ralu
ralu إذا كان خطأ ثم MS يبدو غير مهم تماما في تحديد ذلك. كانت تلك القيود هناك منذ ويندوز إكس بي (إن لم يكن في وقت سابق). - DavidPostill♦
ويندوز إكس بي؟ تخميني أن هذه القيود لها جذورها في MS-DOS 0.x - دعنا نسأل السيد جيتس لتوضيح المشكلة ... - Christian Severin


أنها ليست علة. هو حسب التصميم لمنع مشاكل التوافق.
إنه بقايا من أيام DOS القديمة.

أنظمة الملفات FAT12 (المرنة) و FAT16 (FAT16 قبل دعم اسم الملف طويل المقدمة في نظام التشغيل Windows 95) كان فقط أسماء الملفات المخزنة في 11 بايت:
8 بايت للاسم ، 3 للإمتداد. لم يتم تخزين "الفترة" بين الاسم والامتداد. تم ضمنيًا وإضافتها تلقائيًا لأغراض العرض.
الدلائل لم يكن لها ملحقات على الإطلاق. وبدلاً من ذلك ، تمت تعبئة 3 بايت للإضافة بالأحرف "$" (التي كانت غير قانونية بأسماء حقيقية).
نظرًا لأن Windows لا يزال متوافقًا مع هذا المستكشف ، فإن العديد من المكونات الأخرى في Windows تعمل على جعل الفترة الزائدة تختفي لمنع حدوث مشكلات في التوافق.
كما ذكر آخرون يمكنك بالفعل التعامل مع هذه المجلدات باستخدام دلالات RAW (\\؟ \ prefix قبل اسم المسار المطلق).
خلف الكواليس لا يوجد لدى NTFS وأنظمة ملفات الشبكة أي مشكلة في مثل هذه الملفات والمجلدات. إنها مجرد حالة مستكشف تحاول منع المستخدم من إنشاء شيء قد يسبب مشاكل للبرامج الأخرى.

(في الواقع ، هناك بعض الأمور الأخرى المتبقية أيضًا:
يمكن لأسماء الملفات مثل COM و COM1 و COM2 و AUX و PRN و LPT و LPT1 و LPT2 و LPT3 و CON أن تتسبب في حدوث مشكلات مشابهة حيث يكون كل من Explorer والعديد من أجزاء Windows الأخرى مضطربًا لأن هذه الأسماء هي أسماء "محجوزة" والتي يرجع تاريخها أيضًا إلى عصر DOS.)


17
2018-01-20 16:37



إلى أي قراء آخرين كانوا في البداية غير قادرين على النظر فيما يتعلق بالنقطة التي لم يتم تخزينها: هذا صحيح لـ CP / M وجميع إصدارات FAT ، بما في ذلك FAT16 و FAT32. - Ben N
أتذكر بعض برنامج DOS القديم (يعمل على DOS الفعلي ، من المحتمل أنه يستخدم وظائف INT13 مباشرة) يعطيني الحزن الحقيقي مرة واحدة بإدارة بطريقة ما لإنشاء ملف اسمه: foo.bar على c: drive ... - rackandboneman
@ بن: في الواقع ، على FAT32 انها مختلفة قليلا. يقوم بتخزين كل من اسم ملف قصير (8 + 3 بايت مع أسماء متوافقة مع "نقطة ضمنية") ، بالإضافة إلى اسم ملف طويل (لا يشار إليه باسم LFN) ، يتكون من 255 حرف UCS-2 بنقطة صريحة ، وما لم كنت تعمل مع تطبيقات 16 بت ، كنت تعمل دائما مع LFN. - Matteo Italia
MatteoItalia أفهم أن يتم الاحتفاظ أسماء الملفات الطويلة في إدخالات ملف زائف ؛ تبحث عمليات تثبيت Windows التي هي في معرفة هذه الإدخالات وجعلها بدلاً من SFN إذا أمكن. نرى ريمون تشن بوست حول هذا الموضوع، أو الجزء VFAT من مواصفات تنسيق FAT32 التي قمت بربطها أعلاه. - Ben N
-1 أنت على خطأ حول ملحقات الدليل. ربما كان صحيحًا بالنسبة للـ CP / M (ذاكرتي تافهة حول نظام التشغيل هذا) ، لكني كنت أستخدم دليل "programm.ing" في الشجرة منذ زمن DOS ، وشاهد win.tue.nl/~aeb/linux/fs/fat/fat-1.html - يتم التعامل مع إدخالات الدليل بالضبط كملفات ، يمكن أن يكون لها اسم 8.3 كذلك. اختبار: إنشاء دليل 8.3 (mkdir testfile.name) وعرض اسمها DOS في ويندوز (dir /x) - ستحصل TESTFI~1.NAM، كما هو متوقع. - vaxquis


المشكلة هنا هي أن Windows (DOS) يسمح لأسماء الملفات 8.3 على أنظمة الملفات FAT. المعنى ، 8 أحرف ، متبوعًا بـ. تليها ثلاثة أحرف. يسمح نظامي Unix و Linux بأية أحرف باستثناء / و \ 0. \ 0 هي فاصل سلسلة أحرف C ، و / هو فاصل الدليل. كل شيء آخر يمكن استخدامه.

حصلت Windows 95 حول هذه المشكلة عن طريق الحفاظ على قاعدة بيانات من أسماء الملفات القصيرة (8.3) إلى بيانات التعريف أسماء ملفات طويلة (LFN). إذا قمت بمسح ملفات نظام التشغيل Windows 95 ، فسيتم تركك مع الملفات المسماة بشكل غريب على القرص على تثبيت Windows 95 التالي. على سبيل المثال ، يمكن تسمية "المستندات" MYDOCU ~ 1 على القرص. من الواضح أنه إذا فقدت البيانات الوصفية ، فلن تتمكن من تحويلها بسهولة.

لدى shell للتعامل مع العديد من التزايدات التاريخية التي تسكع منذ أيام MS-DOS.

أتمنى أن يساعدك هذا


3
2018-01-20 20:06



لم يكن هناك حقا قاعدة بيانات في حد ذاتها ؛ النوافذ مشغولة فقط بأجزاء من اسم الملف الطويل على القرص كملفات زائفة. نرى ريمون تشن بوست حول هذا الموضوع. - Ben N