ฉันจะลบไฟล์ชื่อ“ NUL” บน Windows ได้อย่างไร


49

ฉันมีกล่อง Windows XP (NTFS ระบบแฟ้ม) NULซึ่งผมพบว่าไฟล์ชื่อ ฉันไม่สามารถลบไฟล์นี้ได้ตามปกติ ไฟล์ดูเหมือนจะเป็นเจ้าของโดยAdministratorในSYSTEMกลุ่มซึ่งแตกต่างจากไฟล์อื่น ๆ ในไดเรกทอรีเดียวกัน (ไฟล์อื่น ๆ ที่เป็นเจ้าของโดย ID ผู้ใช้ของฉัน)

ฉันจะกำจัดไฟล์นี้ได้อย่างไร มันมาจากไหน


3
NUL เป็นคำสงวนของระบบ เห็นนี้บทความวิกิพีเดีย ไฟล์ชื่อ NUL ไม่ควรอยู่บนระบบไฟล์; สิ่งนี้อาจเกิดจากซอฟต์แวร์บั๊กกี้ คุณอาจจะสามารถลบออกโดยใช้DELETEคำสั่งโดยใช้พร้อมรับคำสั่ง
bwDraco

9
@DragonLord: ระบบไฟล์ไม่มีปัญหากับชื่อดังกล่าว ตัวอย่างเช่นคุณสามารถสร้างไฟล์ดังกล่าวภายในสภาพแวดล้อม POSIX (หนึ่งสามารถค้นหาaux.cและชื่อที่คล้ายกันในซอร์สโค้ดซอฟต์แวร์) เป็น Win32 API ที่จัดการ "ชื่ออุปกรณ์" เหล่านี้อย่างหมดจด
grawity

เช่นเดียวกับ CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, ​​COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT4, LPT4, LPT5, LPT7, LPT8, LPT8, LPT8, LPT9, LPT9, LPT9, LPT9 $ บวกกับคนอื่นไม่กี่คน - ดูen.wikipedia.org/wiki/…
robocat

Cygwin สร้าง (หรือเคย) ไฟล์ที่เรียกว่า "nul" ซึ่งมักจะเห็นใน "C: \ cygwin \ dev \ nul" นี่คือสิ่งที่ฉันตีทุกๆสองสามปีฉัน Google และฉันก็นำกลับมา (อีกครั้ง) กับคำถามนี้
zarchasmpgmr

คำตอบ:


83

ลอง

Del \\?\C:\My\Path\NUL

ในพรอมต์คำสั่ง

ดูบทความสนับสนุนของ Microsoft นี้สำหรับรายละเอียด: คุณไม่สามารถลบไฟล์หรือโฟลเดอร์บนไดรฟ์ข้อมูลระบบไฟล์ NTFSภายใต้ "สาเหตุที่ 5: ชื่อไฟล์ประกอบด้วยชื่อที่สงวนไว้ในพื้นที่ชื่อ Win32"


1
ขอบคุณ! นั่นได้ผล! นอกจากนี้ขอขอบคุณสำหรับการอ้างอิงที่ดีในเอกสารที่เชื่อถือได้ ฉันพบบางสิ่งในการค้นหาเว็บที่คล้ายกันมาก แต่ไม่ได้ผล ข้อเสนอแนะว่ามีในสถานที่ของ. ?
Greg Mattes

1
@Greg: แน่นอน! เอกสารนี้เป็นความช่วยเหลือของ @ DragonLord :-) และใช่.แทนที่?ไม่ได้ทำสิ่งเดียวกัน - เครื่องหมายคำถามป้องกันการประมวลผลเพิ่มเติมโดยระบบย่อยในขณะที่ระยะเวลาหมายถึง "เครื่องปัจจุบัน" ... ไม่เหมือนกันแม้ว่ามันจะแน่นอน ทำให้เกิดความสับสน :)
Mehrdad

1
ฉันไม่แน่ใจว่ามันหมายความว่าจริง \\.\ คำนำหน้าสำหรับnamespace อุปกรณ์แต่ไม่มีการกล่าวถึงอย่างชัดเจนว่า.มีความหมายเหมือนกัน ( "ปัจจุบัน X") มันไม่สำหรับชื่อไดเรกทอรี
grawity

4
ในฐานะที่เป็นทางเลือกในการแก้ปัญหาดังกล่าวข้างต้นถ้าไดเรกทอรีที่ทำงานของคุณมีอยู่แล้วไดเรกทอรีที่มีnulไฟล์ที่คุณสามารถ: ส่วนหนึ่งมีการขยายไปยังไดเรกทอรีทำงานและเครื่องหมายอัญประกาศ ( ) ทำให้มันจับทั้งหมดนอกจากนี้ยัง pathnames ที่มีสัญลักษณ์ "แปลก" เช่น del "\\?\%CD%\nul"%CD%""\\?\C:\path,with\comma\nul"
HenrikB

1
ดูเหมือนว่ามันจะไม่ได้มีประสิทธิภาพจาก powershell หรือการเพิ่มระดับการดูแลในสภาพแวดล้อมของฉัน แต่ทำงานได้อย่างมีประสิทธิภาพในสถานีมาตรฐาน
JustinC

13

อีกทางเลือกหนึ่งถ้าคุณติดตั้งCygwinไว้คุณอาจต้องการทราบว่าไม่มีปัญหากับไฟล์หรือโฟลเดอร์ดังกล่าว โดยเฉพาะอย่างยิ่ง

rm -r /cygdrive/c/path/to/the/file/or/folder/you/want/to/delete

พิมพ์ใน terminal Cygwin ลบไฟล์หรือโฟลเดอร์ที่มีชื่อnulหรือโฟลเดอร์ที่มีมัน นอกจากนี้ยังเป็นที่ใช้บังคับกับชื่อไฟล์พิเศษอื่น ๆ เช่นCON, PRN, AUX, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, ,LPT7LPT8


2
ใช้ได้กับ git bash
c33s

หากคุณติดตั้ง Git แล้วคุณจะได้rmรับคำสั่งGNU ดังนั้นคุณไม่จำเป็นต้องใช้ cygwin สมมติว่าคุณเพิ่มไดเรกทอรีช่องเก็บเครื่องมือ GNU ลงใน PATH ของคุณคุณสามารถใช้สารพัด GNU ทั้งหมดได้จาก cmd
icc97

8

ฉันกำลังเพิ่มที่นี่เพราะมันเป็นผลลัพธ์ที่สูงใน google และฉันมีปัญหาที่คล้ายกันสำหรับโฟลเดอร์ชื่อ NUL น่าเสียดายที่การแก้ไขข้างต้นไม่ได้ช่วย ฉันไม่ได้ดูเรื่องอื่นอีกเลย

ฉันพยายามrmdir\\?\C:\My\Path\NULและ rmdir\\.\C:\My\Path\NULไม่ประสบความสำเร็จและยังลองใช้หลายคำสั่งโดยใช้ bash จากการติดตั้ง SourceTree ของฉัน ไม่มีความสุข

ในที่สุดฉันใช้DIR /X /Aจาก cmd เพื่อแสดงรายชื่อสั้น ๆ ในไดเรกทอรีหลัก สิ่งนี้ส่งคืนNUL~1สำหรับโฟลเดอร์ NUL ของฉัน

สิ่งนี้ถูกใช้ในคำสั่งมาตรฐานrmdir /s NUL~1และในที่สุดก็แก้ไขปัญหาได้


อืมนั่นช่างฉลาดทีเดียวที่ใช้ชื่อย่อเพื่อเลี่ยงชื่อพิเศษ
SamB

1

หากคุณมี Git สำหรับ Windows ติดตั้งให้ทำดังต่อไปนี้

  1. เปิดไดเรกทอรีที่มีไฟล์ที่คุณต้องการลบ
  2. คลิกซ้ายและเลือก Git Bash Here
  3. พิมพ์rm nul.jsonที่พรอมต์คำสั่งแล้วกด ENTER ตอนนี้ไฟล์ควรถูกลบทิ้ง

เรียกใช้ Git Bash ที่นี่

หมายเหตุ: ภาพหน้าจอเหล่านี้แสดงการลบไฟล์nul.topo.jsonซึ่งเป็นไฟล์อื่นที่ฉันไม่สามารถลบได้ด้วยการลบแบบง่าย

หลังจากดำเนินการคำสั่ง

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