Windows неможливо видалити ._. Файл


91

На даний момент у кореня мого зовнішнього жорсткого диска є просто ім'я ._., яке, напевно, було додано на мій жорсткий диск після його використання на моєму MacBook деякий час тому. Я намагаюся видалити цей файл на своїй машині Windows 10; проте Windows продовжує стверджувати, що файл неможливо знайти.

Повідомлення про помилку з Провідника Windows

Я також спробував видалити файл через піднятий командний рядок; проте те саме повідомлення повертається.

Повідомлення про помилку в підвищеному командному рядку

Чи можна видалити цей файл із жорсткого диска через Windows?


7
@ rr - нещастя, яке ви можете зробити з іменами файлів Unix, як правило, значно більше. : 3
Мартін

5
Ваш командний рядок показує щось дивне. Ви так і не find "._."залишили цитати на del ._.. Ви пробували del "._."?
jpmc26

1
цікаве явище. особливо, як важко видалити. Ви впевнені, що файл був законно створений? (називання цього звучить досить дивно навіть для mac)
Томас

30
Моя улюблена частина - це вираження файлу ваших спроб видалити його.
Workman

8
"._."Ви не можете видалити це, оскільки коали є захищеним видом.

Відповіді:


146

Виконайте таку команду (може вимагати підвищених привілеїв / відкритого командного рядка як адміністратора):

del "\\?\F:\._."

Про \\?\префікс :

Для вводу / виводу файлів, \\?\префікс " " до рядка шляху повідомляє API Windows відключити весь аналіз рядків і надіслати рядок, який слідує за ним, прямо у файлову систему.

...

Оскільки він вимикає автоматичне розширення рядка шляху, \\?\префікс " " дозволяє також використовувати " .." і " ." в назвах шляхів, що може бути корисно, якщо ви намагаєтесь виконувати операції над файлом із цими інакше зарезервованими відносним шляхом специфікатори як частина повністю кваліфікованого шляху.

Зауважте, що ви не можете використовувати \\?\префікс " " з відносним шляхом.

Приклад :

==> set prog>"\\?\D:\bat\Unusual Names\._."

==> dir "D:\bat\Unusual Names\*"|find "._."
08.11.2015  13:25               132 ._.

==> type "D:\bat\Unusual Names\._."
The system cannot find the file specified.

==> type "\\?\D:\bat\Unusual Names\._."
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
ProgramW6432=C:\Program Files

==> del "D:\bat\Unusual Names\._."
Could Not Find D:\bat\Unusual Names\._.

==> del "\\?\D:\bat\Unusual Names\._."

==> dir "D:\bat\Unusual Names\*"|find "._."

==>

Можна використовувати цей префікс з URL, al a startкомандою?
Стівен Пенні

Ви не використовуєте це з URL-адресою. Ви використовуєте подвійні лапки, якщо хочете запустити URL-адресу з команди start.
Нельсон

1
... Чи можна це використовувати для обходу меж довжини? (Наприклад, видаліть node_modulesкаталог.)
jpmc26

1
@ jpmc26 Відповідно до MSDN (див. посилання, надане у моїй відповіді), так. Тим НЕ менше, я зустрів сценарії , де \\?\ префікс , що використовуються в delабо rmdirкоманди не допомогло. Звернувся до 7-zipфайлового менеджера.
JosefZ

2
@ jpmc26: Він може обійти деякі межі довжини. В основному розширений шлях має межу довжини 32K. Але більшість контурів на кшталт C:\Windowsабо ..не розширені, і обмеження довжини становить лише 260. Це обмеження 260 застосовується в багатьох місцях; на жаль, досить багато з цих місць неправильно застосовують цю межу також до `\\? 'шляхів.
MSalters

24

Незважаючи на те, що на це питання вже відповіли, я все ж хотів би запропонувати можливе альтернативне рішення: використання застарілих "коротких імен" (які ви можете відображати за допомогою параметра "/ x" для команди dir) також дозволяє вам отримати зчеплення з файлами з "фанк" іменами, з якими ви не можете вчинити інакше:

C:\temp\test>dir
 Volume in drive C has no label.
 Volume Serial Number is 887A-5E48

 Directory of C:\temp\test

11.11.2015  16:31    <DIR>          .
11.11.2015  16:31    <DIR>          ..
11.11.2015  16:31                 7 ._.
               1 File(s)              7 bytes
               2 Dir(s)  44.966.129.664 bytes free

C:\temp\test>dir /x
 Volume in drive C has no label.
 Volume Serial Number is 887A-5E48

 Directory of C:\temp\test

11.11.2015  16:31    <DIR>                       .
11.11.2015  16:31    <DIR>                       ..
11.11.2015  16:31                 7 _3E35~1      ._.
               1 File(s)              7 bytes
               2 Dir(s)  44.966.129.664 bytes free

C:\temp\test>del _3e35~1

C:\temp\test>dir
 Volume in drive C has no label.
 Volume Serial Number is 887A-5E48

 Directory of C:\temp\test

11.11.2015  16:31    <DIR>          .
11.11.2015  16:31    <DIR>          ..
               0 File(s)              0 bytes
               2 Dir(s)  44.966.129.664 bytes free

20

Встановіть 7-zip , відкрийте його та використовуйте меню файлів, щоб перейменувати файл у звичайне ім’я (наприклад, до aaa), а потім ви можете його видалити. Знайдено в цій публікації.

Я перевірив це на Windows XP під керуванням у віртуальній машині. Я використовував Linux, щоб створити файл, викликаний ._.у спільному каталозі.


-4

Просто увімкніть Windows Explorer, перейдіть до файлу. Перейменуйте файл на зразок: filename.txt Тепер ви можете його видалити. Якщо ви не можете цього зробити, вам потрібно бути впевненим, що у вас є права адміністратора.

(btw причина, чому ви не можете її видалити, це тому, що ім'я файлу насправді не має імені та розширення не є дійсним.


1
@ The_IT_Guy_You_Don't_Like Мені цікаво, де ОП це згадав?
муру

@Arie Klep, я повертаю свої слова назад. Я, мабуть, прочитав це в іншому подібному питанні
каламбур

-8

Ви можете видалити файл 1) Взяти на себе право власності 2) надати адміністраторам надання (ви) повного дозволу 3) Робіть з файлом все, що ви хочете

Підвищений рядок CMD

takeown / f Повний шлях до файлу, що не змінюється (останній елемент повинен бути файлом, який не можна змінити)

icacls Повний шлях до невідбірних адміністраторів файлів / грантів: f

Видалити файл


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