Windows ไม่สามารถลบ. _ ไฟล์


91

ขณะนี้ฉันมีไฟล์อยู่ที่รากของฮาร์ดไดรฟ์ภายนอกของฉันที่ตั้งชื่อ._.ไว้ซึ่งฉันเดาว่าถูกเพิ่มลงในฮาร์ดไดรฟ์ของฉันหลังจากใช้งานบน MacBook เมื่อไม่นานมานี้ ฉันพยายามลบไฟล์นี้ในเครื่องที่ใช้ Windows 10; อย่างไรก็ตาม Windows ไม่สามารถอ้างสิทธิ์ไฟล์ได้

ข้อความแสดงข้อผิดพลาดจาก Windows Explorer

ฉันยังพยายามลบไฟล์ผ่านทางพรอมต์คำสั่งที่ยกระดับ อย่างไรก็ตามข้อความเดียวกันจะถูกส่งกลับ

ข้อความแสดงข้อผิดพลาดจากพรอมต์คำสั่งที่ยกระดับ

มีวิธีใดบ้างที่ฉันจะสามารถลบไฟล์นี้จากฮาร์ดไดรฟ์ของฉันผ่าน Windows ได้หรือไม่?


7
@ rr- ความทุกข์ยากที่คุณสามารถทำได้กับชื่อไฟล์ยูนิกซ์มีแนวโน้มที่จะยิ่งใหญ่กว่ามาก : 3
Martijn

5
พรอมต์คำสั่งของคุณแสดงบางสิ่งที่แปลก คุณไม่find "._."ได้ใส่ del ._.แต่จากคำพูดสำหรับ คุณลองdel "._."ไหม
jpmc26

1
ปรากฏการณ์ที่น่าสนใจ โดยเฉพาะอย่างยิ่งยากที่จะลบ คุณแน่ใจหรือว่าไฟล์ถูกสร้างขึ้นอย่างถูกต้อง? (การตั้งชื่อของมันฟังดูค่อนข้างแปลกแม้กระทั่งสำหรับ mac)
Thomas

30
ส่วนที่ฉันชอบคือการแสดงออกของไฟล์ที่คุณพยายามจะลบ
คนงาน

8
"._."คุณไม่สามารถลบได้เนื่องจากโคอาล่าเป็นสัตว์คุ้มครอง

คำตอบ:


146

เรียกใช้คำสั่งต่อไปนี้ (อาจต้องใช้สิทธิ์ระดับสูง / พร้อมรับคำสั่งเปิดเป็นผู้ดูแลระบบ):

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

เกี่ยวกับ\\?\คำนำหน้า :

สำหรับไฟล์ I / O \\?\คำนำหน้า "" ไปยังสตริงพา ธ จะบอก Windows APIs ให้ปิดใช้งานการแยกวิเคราะห์สตริงทั้งหมดและส่งสตริงที่ตามหลังตรงไปยังระบบไฟล์

...

เนื่องจากจะปิดการขยายอัตโนมัติของสตริงพา ธ\\?\คำนำหน้า "" ยังอนุญาตให้ใช้ " .." และ " ." ในชื่อพา ธ ซึ่งอาจมีประโยชน์หากคุณพยายามดำเนินการกับไฟล์ที่มีพา ธ สัมพัทธ์ที่สงวนไว้เป็นอย่างอื่น ตัวระบุเป็นส่วนหนึ่งของเส้นทางแบบเต็ม

โปรดทราบว่าคุณไม่สามารถใช้ส่วน\\?\นำหน้า "" กับพา ธ สัมพัทธ์

ตัวอย่าง :

==> 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 startหรือไม่คำสั่ง?
Steven Penny

คุณไม่ได้ใช้สิ่งนี้กับ URL คุณใช้เครื่องหมายคำพูดคู่หากคุณต้องการเรียกใช้ URL จากคำสั่งเริ่มต้น
เนลสัน

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 ที่ทำงานใน VM ฉันใช้ Linux เพื่อสร้างไฟล์ที่เรียกว่า._.ในไดเรกทอรีที่ใช้ร่วมกัน


-4

เพียงแค่เปิด Windows Explorer ของคุณนำทางไปยังไฟล์ เปลี่ยนชื่อไฟล์เช่น: filename.txt ตอนนี้คุณสามารถลบได้ หากคุณไม่สามารถทำสิ่งนี้ได้คุณต้องแน่ใจว่าคุณมีสิทธิ์ของผู้ดูแลระบบ

(btw เหตุผลที่คุณไม่สามารถลบได้เพราะชื่อไฟล์ไม่มีชื่อจริงและนามสกุลไม่ถูกต้องชื่อไฟล์คือ "." และส่วนขยายคือ "__." ซึ่งไม่ได้รับอนุญาต)


1
@ The_IT_Guy_You_ ไม่ได้ฉันอยากรู้อยากเห็น OP พูดถึงที่ไหน
muru

@Arie Klep ฉันเอาคำพูดของฉันกลับมา ฉันต้องอ่านมันในคำถามที่คล้ายกันอีกข้อ
ปุน

-8

คุณสามารถลบไฟล์โดย 1) เป็นเจ้าของ 2) ให้สิทธิ์ผู้ดูแลระบบ (คุณ) ได้รับอนุญาตเต็ม 3) ทำสิ่งที่คุณต้องการด้วยไฟล์

เพิ่มพรอมต์ CMD

takeown / f เส้นทางแบบเต็มไปยังไฟล์ที่ไม่สามารถลบได้ (รายการสุดท้ายต้องเป็นไฟล์ที่ไม่สามารถลบได้)

icacls เส้นทางแบบเต็มไปยังไฟล์ที่ไม่สามารถลบได้ / ผู้ดูแลระบบให้สิทธิ์: f

ลบไฟล์


26
ปัญหาดูเหมือนว่า Windows ไม่สามารถเข้าถึงไฟล์ได้เลยเนื่องจากชื่อไฟล์ไม่สอดคล้องดังนั้นฉันจะประหลาดใจมากถ้าคำตอบนี้ใช้งานได้
สกอตต์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.