題 Windows無法刪除._。文件


我目前在外部硬盤驅動器的根目錄上有一個簡單命名的文件 ._.我剛猜測它是在我的MacBook上使用它之前添加到我的硬盤上的。我正在嘗試在Windows 10計算機上刪除此文件;但Windows一直聲稱無法找到該文件。

Error message from Windows Explorer

我還嘗試通過提升的命令提示符刪除該文件;但是返回相同的消息。

Error message from elevated command prompt

有什麼辦法可以通過Windows從硬盤中刪除這個文件嗎?


91
2017-11-08 04:14


起源


@ rr-你可以用unix文件名做的痛苦往往要大得多。 :3 - Martijn
您的命令提示符顯示奇怪的內容你做到了 find "._." 但遺漏了引號 del ._.。你試過了嗎 del "._."? - jpmc26
有趣的現象。特別是刪除有多難。你確定該文件是合法創建的嗎? (即使對於mac,它的命名聽起來也很奇怪) - Thomas
我最喜歡的部分是文件表示你試圖刪除它。 - Workman
"._." 你不能刪除它,因為考拉是受保護的物種。


答案:


運行以下命令(可能需要提升權限/以管理員身份打開命令提示符):

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

有關 \\?\ 字首

對於文件I / O,“\\?\“路徑字符串的前綴告訴Windows   用於禁用所有字符串解析並發送後續字符串的API   它直接到文件系統。

...

因為它關閉了路徑字符串的自動擴展,所以   “\\?\“前綴也允許使用”..“和”.“在路上   名稱,如果您嘗試執行操作,這可能很有用   在具有這些其他保留的相對路徑說明符的文件上   完全合格路徑的一部分。

請注意,你不能使用“\\?\“帶有相對路徑的前綴。

==> 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 "._."

==>

143
2017-11-08 07:39



像冠軍一樣工作,謝謝! - Mike Koch
可以將該前綴與URL一起使用,也就是說 start 命令? - Steven Penny
......這可以用來繞過長度限制嗎? (例如,刪除一個 node_modules 目錄。) - jpmc26
@ jpmc26根據MSDN(參見我的回答中提供的鏈接),是的。但是,我遇到了情景 \\?\  用於的前綴 del 要么 rmdir 命令沒有幫助。轉向 7-zip 文件管理器。 - JosefZ
@ jpmc26:它可以繞過一些長度限制。基本上,擴展路徑的長度限制為32K。但大多數路徑都喜歡 C:\Windows 要么 .. 不擴展,長度限制只有260.在許多地方實施260限制;不幸的是,相當多的地方錯誤地將這個限制應用於`\\?`路徑。 - MSalters


即使這個問題已經得到解答,我仍然想提供一個可能的替代解決方案:使用傳統的“短名稱”(你可以使用dir命令的“/ x”選項顯示)也可以允許你掌握具有“時髦”名稱的文件,否則無法處理:

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

24
2017-11-11 15:38





安裝 7拉鍊,打開它並使用其文件菜單將文件重命名為普通名稱(例如 aaa)然後你可以刪除它。發現於 這個 帖子。

我在運行VM的Windows XP上測試了這個。我用Linux創建了一個名為的文件 ._. 在共享目錄上。


20
2017-11-08 06:08





只需瀏覽Windows資源管理器,導航到該文件即可。 將文件重命名為:filename.txt 現在你可以刪除它。 如果您無法執行此操作,則需要確保您擁有管理員權限。

(順便說一下你不能刪除它的原因是因為文件名實際上沒有名字而且擴展名無效。文件名為“。”,擴展名為“__。”,這是不允許的。)


-4
2017-11-08 08:37



@ The_IT_Guy_You_Don't_Like我很好奇,OP在哪裡提到這個? - muru
@Arie Klep,我接受了我的話。我必須在另一個類似的問題中閱讀它 - pun


您可以刪除該文件 1)取得所有權 2)授予管理員(您)完全許可 3)用文件做你想做的事

提升CMD提示

takeown / f Undeletable File的完整路徑(最後一項必須是不可刪除的文件)

icacls Undeletable文件/授權管理員的完整路徑:f

刪除文件


-8
2017-11-08 06:04



問題似乎是Windows根本無法訪問該文件,因為它的文件名不一致,所以如果這個答案有效,我會非常驚訝。 - Scott