ลบไฟล์ที่มีอักขระที่ไม่ถูกต้องใน windows


16

ฉันมีไฟล์บางไฟล์ที่มีอักขระโคลอนในชื่อไฟล์ (เช่น 1d67c0d23e859ed4a259749e4a720d9e: default-sink) เมื่อฉันพยายามลบออกจากบรรทัดคำสั่งด้วยคำสั่ง:

c:\backup> del /F *.*

ฉันได้รับ "ระบบไม่พบไฟล์ที่ระบุ" สำหรับแต่ละไฟล์ ถ้าฉันระบุไฟล์แต่ละไฟล์:

c:\backup> del /F "1d67c0d23e859ed4a259749e4a720d9e:default-sink"

ฉันได้รับ "ชื่อไฟล์ชื่อไดเรกทอรีหรือไวยากรณ์ของชื่อไดรฟ์ข้อมูลไม่ถูกต้อง" ถ้าฉันพยายามใช้ rd ในโฟลเดอร์พาเรนต์ที่ฉันได้รับ

ฉันจะลบไฟล์เหล่านี้ได้อย่างไร


2
ไฟล์เหล่านี้ถูกสร้างขึ้นในพาร์ติชัน NTFS เมื่อฉันถูกบูทเข้า Linux เดาฉันจะต้องใช้ดิสก์สำหรับบูต Linux เพราะดูเหมือนว่า Windows ไม่ชอบโคลอนในชื่อไฟล์ในระดับไดรเวอร์ระบบไฟล์
grom

ที่เกี่ยวข้อง: superuser.com/q/31587/320611
David Refoua

คำตอบ:


22

มีบทความ Microsoft KB ที่แสดงวิธีที่เป็นไปได้ในการลบไฟล์ดังกล่าวได้ที่:

http://support.microsoft.com/kb/320081

วิธีที่ฉันใช้เป็นวิธีดั้งเดิมของ API:

del "\\?\c:\path\1d67c0d23e859ed4a259749e4a720d9e:default-sink"

ตาม:

http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx

:เป็นตัวละครที่สงวนไว้บน NTFS วิธี API พื้นเมืองที่ผมกล่าวถึงข้างต้นเป็นวิธีที่แนะนำให้ลบไฟล์ดังกล่าว


4
วิธีนี้ใช้ไม่ได้กับโคลอนเนื่องจากถูกตีความว่าเป็นสตรีมข้อมูลที่มีชื่อ
psusi

สิ่งนี้ใช้ได้กับกรณีของฉัน ไฟล์ที่ฉันมีปัญหาด้วยมีเครื่องหมายจุลภาค,
Maher Fattouh

ขอบคุณสิ่งนี้ใช้ได้สำหรับฉัน ไฟล์สิ้นสุดในช่วงเวลาหนึ่ง CA848D8F
Mastro

1
ใช้งานไม่ได้ ชื่อไฟล์ของฉันมีแบ็กสแลช
Pacerier

หากชื่อไฟล์มี:ตามที่ OP ได้ถามเกี่ยวกับวิธีการนี้จะไม่ทำงาน ใช้chkdskหรือลบออกจากลินุกซ์สด
Sourav Ghosh

15

ฉันเดาว่าคุณสามารถลองใช้ชื่อ 8.3 ได้ไหม

del /F 1d67c0~1

โปรดทราบว่าในไดรฟ์ NTFS คุณสามารถปิดการใช้งานฟังก์ชั่น 8.3 ได้อย่างชัดเจนดังนั้นหากเป็นกรณีนี้คุณจะโชคดีสำหรับตัวเลือกนี้ ในการรับชื่อไฟล์ dirdir /x

เคยมีเครื่องมือฟรีแวร์ที่เรียกว่าdelinvfileแต่พวกเขาหายไปและเปลี่ยนเป็นแชร์แวร์ / จ่ายแล้ว


ฉันจะสามารถทำสิ่งนี้บนไดรฟ์ข้อมูล NTFS ที่สร้างขึ้นด้วยformatคำสั่งที่สนับสนุนชื่อ 8.3 ได้อย่างไร
2284570

1
@ user2284570 วิธีนี้ใช้ไม่ได้ เมื่อฉันเขียนคำตอบนั้น Microsoft มีการเปิดใช้งานชื่อ 8.3 แต่วันนี้มันถูกปิดใช้งานโดยค่าเริ่มต้น
Mark Henderson

@MarkHenderson 7:2ชื่อไฟล์ของฉันคือ ฉันจะใช้ชื่อ 8.3 สำหรับชื่อไฟล์ได้7:2อย่างไร
Pacerier

@Pierier เห็นความคิดเห็นก่อนหน้าของฉัน วิธีนี้ใช้ไม่ได้กับระบบปฏิบัติการที่ทันสมัย Windows XP หรือเก่ากว่า
Mark Henderson

13

สิ่งนี้ใช้ได้กับฉัน:

  1. Ran chkdsk /f
  2. รีบูตเครื่อง PC
  3. จากนั้นฉันก็สามารถเลือกและลบไฟล์ได้

4

ปิดไฟล์ทั้งหมดหากมีไฟล์ที่เปิดอยู่ซึ่งถูกบันทึกไว้ในไดรฟ์ที่มีไฟล์ดังกล่าว ตอนนี้เปิดคุณสมบัติของไดรฟ์

"My Computer" -> "คลิกขวาที่คุณสมบัตินี้">

จากนั้นไปที่แท็บ " เครื่องมือ " แล้วคลิก " ตรวจสอบตอนนี้ " ภายใต้ป้ายกำกับ 'ตรวจสอบข้อผิดพลาด'

ป้อนคำอธิบายรูปภาพที่นี่คลิกที่นี่เพื่อดูภาพขนาดใหญ่

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

ฉันลบไฟล์เหล่านั้นออกจากฮาร์ดดิสก์ภายนอกได้สำเร็จ


3

ฉันมีระบบย่อยสำหรับแอพพลิเคชั่นที่ใช้ระบบปฏิบัติการ UNIXติดตั้งบนพีซีของฉัน (Windows 7) จากเชลล์ Windows ฉันสามารถสร้างไฟล์ด้วยtouch 1d67c0d23e859ed4a259749e4a720d9e:default-sinkจากนั้นลบออกด้วยrm *:*


ยูทิลิตี้ที่สอดคล้องกับ POSIX (เช่น SFU) สามารถลบไฟล์ดังกล่าวได้
Ausmith 1

@JoeInternet: sigghh Microsoft ได้ลบระบบย่อย windows ทั้งหมดที่มี 2012 ขึ้นไป
2284570

... แต่ระบบย่อยยูนิกซ์กลับมาอีกครั้งในการชนะ 10
165568

1

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


1

7zipสามารถลบไฟล์ที่ Windows ไม่สามารถทำได้; ฉันเคยใช้มาก่อนในการจัดการกับชื่อไฟล์ที่ยาวเกินไป แต่ฉันไม่เคยลองกับไฟล์ที่มีเครื่องหมายโคลอนมาโดยปกติพวกเขาจะใช้เพื่อแสดงโฆษณา


นี่เป็นเพราะ 7-zip ใช้ cygwin
2284570

1
ใช้งานไม่ได้กับทั้งไฟล์ของฉัน ไฟล์แรกมีชื่อไฟล์พร้อมแบ็กสแลชและไฟล์ที่สองมีชื่อไฟล์พร้อมโคลอน
Pacerier

ไม่เป็นเพราะ 7-zip ใช้ Windows API แทนเชลล์ มันมีข้อ จำกัด เช่นเดียวกับ API: มันคิดว่าเครื่องหมายทวิภาคระบุลำธาร
user165568

7zip ทำงานให้ฉัน
user1278519

1

ฉันมีระบบบูทคู่และไม่ใช่คำตอบข้างต้นที่เหมาะกับฉัน หากไฟล์นั้นอยู่ในดิสก์ที่ระบบปฏิบัติการอื่นของคุณติดตั้ง (Ubuntu 16.04 LTS สำหรับฉัน) คุณสามารถลบไฟล์โดยใช้ระบบปฏิบัติการอื่นของคุณได้)


สิ่งนี้ค่อนข้างสมเหตุสมผลเมื่ออยู่ในข้อผูกมัด (แม้ว่าจะไม่สามารถทำได้กับเครื่องออนไลน์) นอกจากนี้ยังไม่จำเป็นต้องใช้การบูตสองระบบเนื่องจากเราสามารถบูตการเผยแพร่สดเพื่อทำสิ่งนี้เช่นดิสก์ติดตั้ง Fedora หรือ Knoppix อย่างไรก็ตามหนึ่งควรระวังเมื่ออยู่ในสภาพแวดล้อมเช่นนี้เป็นไดรเวอร์ NTFS3G ที่เราใช้ในการติดตั้งระบบนี้จะไม่เคารพสิทธิ์ Windows / ACLs ส่วนใหญ่ (ซึ่งเป็นเหตุผลที่มันมีประสิทธิภาพในการกำจัดไฟล์ "ติด") .
Spooler

0

คุณลองอ้างชื่อไฟล์หรือไม่? การให้คำสั่งที่แน่นอนที่คุณใช้อยู่นั้นจะเป็นประโยชน์


ฉันได้เพิ่มไปยังคำสั่งที่แน่นอนฉันกำลังถามคำถาม
grom

0

คุณได้ลองใช้ไวด์การ์ดแล้วหรือยัง? ตัวอย่างเช่น 'del 1d67c0d23e859ed4a259749e4a720d9e *. *' อาจใช้งานได้


คุณลองใช้ไวลด์การ์ด ไม่มีโชค
grom

1
สิ่งต่อไปที่ฉันคิดคือการบูทระบบด้วย linux cd (เช่น system rescue cd), ติดวอลลุ่มที่นั่นและลองลบจากตรงนั้น คุณอาจได้ผลลัพธ์ที่น่าสนใจ ณ จุดนั้นใครจะรู้ว่าเกิดอะไรขึ้นในระบบไฟล์
Michael Kohne

@MichaelKohne: ฉันคิดว่าการใช้ Unix path เป็นทางเลือกที่เหมาะสมเช่นกัน แต่ทำไมต้องใช้ลินุกซ์ windows ทำงานเป็นระบบย่อย NT และมีระบบย่อย POSIX / Unix NT อยู่แล้ว
2284570

1
@ user2284570 - เนื่องจากความจริงที่ว่าพวกเขาสร้างขึ้นด้วย Linux ดูเหมือนว่าไดรเวอร์ linux NTFS อนุญาตบางอย่างที่ไม่ควรมีซึ่งแม้แต่เปลือก POSIX ของ Windows อาจไม่สามารถเลื่อนผ่านไดรเวอร์ระบบไฟล์ได้ ง่ายกว่ามากในการบูตซีดี linux สดลบไฟล์ปลอมและรีบูตกลับไปที่ Windows
Michael Kohne

@MichaelKohne: ไม่เพราะเส้นทาง UNC ใช้งานได้แล้ว(ระบบย่อยดั้งเดิม)และระบบย่อย POSIX ไม่มีการเข้าถึงโดยตรงไปยังสตรีมข้อมูลสำรองดังนั้นคุณจึงสามารถใช้:ไฟล์ภายในได้
2284570

0

คุณลอง dir / X เพื่อค้นหาชื่อจริง 8.3 จากนั้นลองลบชื่อนั้นหรือไม่

หรือไฟล์นั้นอาจมีสตรีมข้อมูลสำรองหรือไม่ คุณอาจต้องการดูมันจะเครื่องมือที่http://www.nirsoft.net/utils/alternate_data_streams.htmlเพื่อดูสิ่งที่สามารถบอกคุณได้ (ฉันไม่เคยใช้เครื่องมือนั้นมันเพิ่งมาเมื่อฉันค้นหา) .


0

ฉันมีโฟลเดอร์ที่มีเครื่องหมายจุลภาคในชื่อ ฉันลองใช้คำแนะนำด้านบนสองสามข้อและไม่สามารถใช้งานได้

ฉันสามารถลบโฟลเดอร์ด้วย cygwin ได้ การติดตั้งแอพนั้นไม่ได้มีไว้สำหรับทุกคน แต่จะใช้งานได้


0

คำแนะนำข้างต้นไม่เหมาะสำหรับฉัน ฉันใช้ WinRar เปิด winrar แล้วคุณจะเห็นรายการไฟล์โดยที่คุณจะต้องสงสัยว่า "filename" (ซึ่งคุณสร้างขึ้นในชื่อ "filename: some_text.txt") เปลี่ยนชื่อไฟล์ใน Winrar และใส่นามสกุล (เช่น. txt หรือ .doc)

กลับไปที่ Windows Explorer คุณจะเห็น "filename .txt" (หรือเอกสาร) ลบออกจากที่นั่น

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