Windows не удается удалить ._. файл

91

В настоящее время у меня есть файл в корневом каталоге моего внешнего жесткого диска с простым именем ._., который, как я предполагаю, был добавлен на мой жесткий диск после использования его на моем MacBook некоторое время назад. Я пытаюсь удалить этот файл на моем компьютере с Windows 10; однако Windows продолжает утверждать, что файл не может быть найден.

Сообщение об ошибке из Windows Explorer

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

Сообщение об ошибке из командной строки с повышенными правами

Можно ли как-нибудь удалить этот файл с моего жесткого диска через Windows?

Майк Кох
источник
7
@ rr- страдания, которые вы можете делать с именами файлов Unix, имеют тенденцию быть намного больше. : 3
Мартейн
5
Ваша командная строка показывает что-то странное. Вы сделали, find "._."но оставили цитаты для del ._.. Ты пробовал del "._."?
jpmc26
1
интересное явление. особенно как сложно это удалить. Вы уверены, что файл был законно создан? (название звучит довольно странно даже для Mac)
Томас
30
Моя любимая часть - это выражение файла ваших попыток удалить его.
Рабочий
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 "._."

==>
JosefZ
источник
Можно использовать этот префикс с URL, или startкоманду?
Стивен Пенни
Вы не используете это с URL. Вы используете двойные кавычки, если хотите запустить URL из команды запуска.
Нельсон
1
... Может ли это использоваться, чтобы обойти ограничения длины? (Например, удалить node_modulesкаталог.)
jpmc26
1
@ jpmc26 Согласно MSDN (см. ссылку в моем ответе), да. Однако я встречал сценарии, в которых \\?\ префикс, используемый в командах delили rmdirкомандах, не помог. Обратился к 7-zipфайловому менеджеру.
JosefZ
2
@ jpmc26: может обойти некоторые ограничения по длине. По сути, расширенный путь имеет ограничение длины 32 КБ. Но большинство путей, как 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 для создания файла, который называется ._.общей папкой.

NZD
источник
-4

Просто откройте ваш проводник и перейдите к файлу. Переименуйте файл как: filename.txt Теперь вы можете удалить его. Если вы не можете этого сделать, вам необходимо убедиться, что у вас есть права администратора.

(Кстати, причина, по которой вы не можете удалить его, заключается в том, что имя файла фактически не имеет имени и расширение недопустимо. Имя файла - «.», а расширение - «__.», что недопустимо.)

Арье Клеп
источник
1
@ The_IT_Guy_You_Dont_Like Мне интересно, где OP упомянул об этом?
Муру
@ Арье Клеп, я забираю свои слова обратно. Я, должно быть, прочитал это в другом подобном вопросе
каламбур
-8

Вы можете удалить файл с помощью: 1) стать владельцем 2) предоставить администраторам (вам) полное разрешение 3) делать с файлом все, что вы хотите

Повышенный CMD подскажите

takeown / f Полный путь к невосстановимому файлу (последний элемент должен быть невосстановимым файлом)

icacls Полный путь к удаленным администраторам файлов / грантов: f

Удалить файл

user53336
источник
26
Проблема заключается в том, что Windows вообще не может получить доступ к файлу из-за своего несоответствующего имени файла, поэтому я был бы очень удивлен, если этот ответ работает.
Скотт