Чому в Windows 7 не можна назвати папку "._."?


74

Я просто зауважив , що це не можна назвати папку ._.- він отримує по імені ._замість цього. Іноді він зникає відразу після його іменування, але знову з’являється після оновлення подання. Здається, Windows має проблему з крапками в кінці імені файлу - чому це?


21
Варто відзначити , що ви натрапили «зламати» для початку ім'я файлу з .в Windows.
jpmc26

8
@ThisNameBetterBeAvailable Не перевірено, але, cd -- -_-можливо, може працювати. Це --звичайний маркер "кінця варіантів".
TripeHound

13
@ThisNameBetterBeAvailable Ні, --власними силами " це кінець варіантів, розглядайте будь-які дії, починаючи з -буквального значення ". Тільки перевірена: mkdir -- -_-і cd -- -_-працює, як я і очікував.
TripeHound

2
Як варіант, також ./-_-слід працювати.
glglgl

5
@Alexander В linux, оскільки, схоже, саме туди йшли коментарі, cd "-_-"оболонка використовує лапки для групування, але не вважає їх частиною аргументу; це помилки зinvalid option
Ізката

Відповіді:


123

Windows зазвичай вимагає, щоб у файлах не було жодного розширення або розширення, яке має принаймні один символ; це не круто з розширенням нульової довжини, тобто іменами файлів, які закінчуються .. Папки також можуть мати розширення, тому Windows не дозволяє їх іменам закінчуватися символом a .. Джерело, зі статті, з якою пов’язаний DavidPostill :

Використовуйте період, щоб відокремити ім'я базового файлу від розширення в імені каталогу чи файлу .

(Наголос мій.) Якщо ви намагаєтеся закінчити файл або каталог, названий періодом, Windows просто припускає, що ви не хочете розширення, і таким чином видаляє його, навіть якщо ви створюєте його mdв командному рядку.

Небезпечна зона! Якщо ви прямо хочете, щоб ім’я папки закінчилося ., вам потрібно буде використовувати магічну послідовність переосмислення імені \\?\. У командному рядку md \\?\C:\path\to\container\._.дійсно буде створена папка з назвою ._., але у багатьох програм виникнуть проблеми з нею, навіть Провідник:

._.  проблеми

Такий каталог можна видалити лише з rdнаступним його \\?\іменем або перейменованим на його коротке (8.3, dir /x) ім'я.


1
Дякую за детальну відповідь! :) Я думаю, що це була б ідеальна папка для приховування секретних речей, таких як паролі всередині неї, тому що відкрити папку можна лише тоді, коли ви її перейменовуєте спочатку, і не всі знають, як її перейменувати.
Чорний

19
@EdwardBlack це не зупинить тих, хто міг прочитати обмін стеками (і, отже, не забезпечив би навіть безпеку проти гіпотетичного маленького брата). Ім'я, яке дається, dir /xробить його досить простим, але є й інші випадки, коли це ім’я зручно.
Кріс Х

11
FWIW, інструменти командного рядка Cygwin також можуть створювати (і маніпулювати) такими каталогами в Windows 7, не використовуючи магічну послідовність.
Стів Джессоп

4
@EdwardBlack Як згадував Кріс Х, це не дуже секретно, тому вам не слід зберігати в такій папці нічого особливо важливого. Більше того, цифрова таємниця та захист - це проблема, яку вже багато разів вирішують. Ви можете використовувати будь-яку кількість методів та програм шифрування, щоб забезпечити безпеку, не покладаючись на незрозумілі назви папок.
Кріс Харпер

3
Нітпік: Принаймні за 8,3 дня (я не досліджував, що записано на диск на NTFS), період ніколи не записувався на диск. Ім'я було розбито на ім’я та розширення, вони зберігалися окремо. Після прочитання він взяв ім'я, а якщо було розширення, додав до імені період і розширення. Таким чином, не існувало способу виразити ._. у структурі каталогу, звичайно, ви втратили крапку.
Лорен Печтел

22

Здається, Windows має проблему з крапками в кінці імені файлу? Чому це?

Не закінчуйте ім'я файлу чи каталогу пробілом чи періодом. Хоча базова файлова система може підтримувати такі імена, оболонка Windows та інтерфейс користувача це не так.

Нижче наведено посилання на джерело, яке детальніше розповідає про правила іменування.

Джерело, що називає файли, шляхи та простори імен


5
Це все ще звучить як помилка для мене.
ралу

@ralu Якщо це помилка, то MS, здається, абсолютно нецікаво виправляє її. Ці обмеження існували з Windows XP (якщо не раніше).
DavidPostill

Windows XP? Я гадаю, що ці обмеження мають своє коріння в MS-DOS 0.x - давайте попросимо містера Гейтса прояснити проблему ...
Крістіан Северин

17

Це не помилка. Це задум для запобігання проблем сумісності.
Це залишок від старих часів DOS.

Файлові системи FAT12 (дискети) та FAT16 (FAT16 до тривалої підтримки імен файлів, запроваджені в Windows 95) мали лише імена файлів, що зберігаються в 11 байтах:
8 байт для імені, 3 для розширення. "Період" між іменем та розширенням навіть не зберігався. Це було мається на увазі та автоматично додається для цілей відображення.
Каталоги взагалі не мали розширень. Натомість 3 байти для розширення були заповнені символами "$" (які були незаконними справжніми іменами).
Оскільки Windows все ще сумісний з цим Провідником, а багато інших компонентів Windows мовчки змушують зникати тривалість періоду, щоб уникнути створення проблем із сумісністю.
Як заявили інші, ви можете реально обробляти такі папки, використовуючи семантику RAW (префікс \\? \ Перед абсолютною назвою шляху).
За лаштунками NTFS та мережеві файлові системи не мають проблем з такими файлами та папками. Це лише випадок, коли Провідник намагається завадити користувачеві створити щось, що може спричинити проблеми для іншого програмного забезпечення.

(Насправді є і деякі інші залишені
файли. Імена файлів, такі як COM, COM1, COM2, AUX, PRN, LPT, LPT1, LPT2, LPT3, CON, можуть спричинити подібні проблеми, коли Explorer і багато інших частин Windows заплутаються. оскільки ці імена є "зарезервованими" іменами, які також датуються епохою DOS.)


3
Для будь-яких інших читачів, які спочатку були недовірливими щодо точки, яка не зберігається: це правильно для CP / M та всіх версій FAT, включаючи FAT16 та FAT32 .
Бен Н

1
Я пам’ятаю стару програму DOS (працює на фактичному DOS, ймовірно, використовуючи функції INT13 безпосередньо), приносячи мені справжнє горе, якось встигаючи створити файл з назвою: foo.bar на c: drive ...
rackandboneman

2
@BenN: насправді, на FAT32 це дещо інакше; він зберігає як коротке ім'я файлу (8 + 3 байти із "неявною крапкою" назад сумісні імена), так і довге ім'я файлу (часто називається LFN), що містить до 255 символів UCS-2 з явною крапкою, і якщо тільки ви працюєте з 16-бітовими додатками, ви завжди працюєте з LFN.
Маттео Італія

1
@MatteoItalia Наскільки я розумію, довгі імена файлів зберігаються у підроблених записах файлів; Установки Windows, які знають, шукають ці записи та надають їх замість SFN, якщо можливо. Дивіться публікацію Реймонда Чена на цю тему або VFAT частина специфікації формату FAT32, яку я пов’язував вище.
Бен N

1
-1 ви помиляєтесь щодо розширень каталогу; можливо, це було правдою для CP / M (у мене пам’ять шалено щодо цієї ОС), але я використовував каталог "programm.ing" у своєму дереві ще з часів DOS, і дивіться win.tue.nl/~aeb/linux/ fs / fat / fat-1.html - записи каталогів обробляються точно як файли, вони також можуть мати 8,3 імені. Тест: створити каталог 8.3 ( mkdir testfile.name) та відобразити його ім'я DOS в Windows ( dir /x) - ви отримаєте TESTFI~1.NAM, як очікувалося.
vaxquis

3

Проблема тут полягає в тому, що Windows (DOS) дозволяв використовувати 8.3 імен файлів у файлових системах FAT. Значення, 8 символів, а потім a. далі три символи. Unix і Linux дозволяють використовувати будь-які символи, крім / і \ 0. \ 0 - термінатор рядка символів C та / - роздільник каталогів. Все інше можна використовувати.

Windows 95 вирішив цю проблему, підтримуючи базу даних з короткими (8.3) іменами файлів до метаданих довгих імен файлів (LFN). Якщо ви видалили файли ОС Windows 95, у наступній установці Windows 95 вам не залишиться дивно назви файлів на диску. Наприклад, "Мої документи" можна назвати MYDOCU ~ 1 на диску. Очевидно, що якщо ви втратили метадані, ви не зможете їх легко перетворити.

Оболонка повинна справлятися з багатьма історичними кроками, які звисають ще з часів MS-DOS.

Сподіваюсь, це допомагає


1
Сам по собі насправді не було бази даних; Windows просто заклинила частини довгого імені файлів на диску у вигляді штучних файлів. Дивіться публікацію Реймонда Чена на цю тему .
Бен Н
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.