ฉันต้องลบโฟลเดอร์หนึ่งที่มีโฟลเดอร์และไฟล์อื่นอยู่ภายใน ฉันพยายามdel
และrmdir
คำสั่ง แต่บางครั้งพวกเขาล้มเหลวด้วยข้อผิดพลาดบางบรรทัด[PATH]: The directory isn't empty.
มีทางเลือกที่ดีหรือไม่?
ฉันต้องลบโฟลเดอร์หนึ่งที่มีโฟลเดอร์และไฟล์อื่นอยู่ภายใน ฉันพยายามdel
และrmdir
คำสั่ง แต่บางครั้งพวกเขาล้มเหลวด้วยข้อผิดพลาดบางบรรทัด[PATH]: The directory isn't empty.
มีทางเลือกที่ดีหรือไม่?
คำตอบ:
สิ่งนี้เกิดขึ้นกับฉันมากด้วยสคริปต์สร้างอัตโนมัติของฉัน
ฉันคิดว่าเหตุผลอาจเป็นแอปพลิเคชั่นบางตัวที่มีไฟล์เปิดอยู่ในไดเรกทอรีนั้นด้วย "share delete" คือแอปพลิเคชันอนุญาตให้ลบไฟล์ได้ (ซึ่งเป็นสาเหตุที่ฉันคิดว่าการโทร DeleteFile ไม่ได้ล้มเหลว) แต่ไฟล์จะหายไปหลังจากแอปพลิเคชันดังกล่าวปิดลงเท่านั้น
ซึ่งหมายความว่าไฟล์อาจยังอยู่ที่นั่นเมื่อrmdir
คำสั่งพยายามลบโฟลเดอร์ดังนั้นข้อความแสดงข้อผิดพลาด หลังจากนั้นไม่นานแอปพลิเคชันดังกล่าวจะปิดตัวจัดการไฟล์จะหายไปและเมื่อคุณตรวจสอบโฟลเดอร์เพื่อดูว่าไฟล์ใดที่rmdir
กำลังพูดถึงมันจะว่างเปล่า
อย่างน้อยนั่นก็คือทฤษฎีของฉัน
วิธีแก้ปัญหาที่เสนอโดย Harry Johnston ดูดี มีเพียงฉันเท่านั้นที่จะแทรกการหยุดชั่วคราวระหว่างrmdir
คำสั่ง แน่นอนว่า Windows ไม่มีคำสั่ง "หยุด" ที่เขียนได้ง่าย (การแก้ไข: เวอร์ชันวินโดวส์โบราณไม่ได้ใหม่กว่ามี - ดูความคิดเห็น) แต่ถ้าวินาทีมีความละเอียดเพียงพอก็สามารถใช้ping
เพื่อสร้างหยุดชั่วคราว:
ping -n {desired_delay_in_seconds + 1} 127.0.0.1 >nul
ดังนั้นทั้งหมด:
rd /s /q foo
:: retry once
if exist foo (
:: clear errorlevel
cmd /c
:: pause
ping -n 2 127.0.0.1 >nul
:: retry
rd /s /q foo
)
:: retry yet again
if exist foo (
cmd /c
ping -n 2 127.0.0.1 >nul
rd /s /q foo
)
:: give up
if exist foo {panic}
rm -rf /directory/
ควรเป็นสากลในทุกระบบปฏิบัติการ
timeout /t 3
pause
คำสั่ง)
ลอง:
rmdir /S your_directory
หรือ:
rmdir /S /Q your_directory
เพื่อข้ามข้อความยืนยัน
del
และrmdir
ไม่ถามอะไรเลยพวกเขาเพียงแค่ส่งบางบรรทัดเหมือนคำอธิบาย
rmdir /s
จะลบสิ่งที่เป็นไปได้ที่จะลบ คุณอาจมีไฟล์ที่ถูกล็อคโดยโปรแกรมไฟล์แบบอ่านอย่างเดียวหรือไฟล์ที่คุณต้องมีสิทธิ์การเข้าถึงระดับผู้ดูแลในการลบ ไม่มีคำสั่งเดียวที่จะคอยดูแลสถานการณ์เหล่านั้นให้กับคุณ
คุณอาจมีไฟล์แบบอ่านอย่างเดียวคุณสามารถใช้ตัวเลือก del / F เพื่อกำจัดไฟล์เหล่านั้นโดยใช้
del /S /F your_directory
rmdir your_directory
คุณสามารถมีไฟล์ที่ซ่อนอยู่และถ้าคุณแน่ใจว่าต้องการลบไฟล์จริงๆคุณสามารถทำได้โดยใช้
del /S /F /AH your_directory
rmdir your_directory
หากสิ่งนี้ยังคงล้มเหลวคุณอาจไม่ได้รับอนุญาตให้ลบไฟล์บางไฟล์หรือบางไฟล์ยังคงใช้งานอยู่
ฉันเชื่อว่ามีข้อผิดพลาดใน Windows 7 (และอาจเป็นรุ่นอื่น ๆ ) ซึ่งบางครั้งทำให้เกิดอาการนี้; หรืออาจเป็นข้อผิดพลาดในซอฟต์แวร์ของบุคคลที่สาม (คุณมี Symantec Endpoint Protection ติดตั้งโดยบังเอิญหรือไม่?)
อย่างไรก็ตามฉันได้เจอมันบ่อยครั้ง ในกรณีส่วนใหญ่ปัญหาสามารถแก้ไขได้ด้วยการรันrd /s /q
สองหรือสามครั้งในแถว
หากนี่เป็นไฟล์แบตช์คุณสามารถทำสิ่งนี้:
rd /s /q foo
if exist foo rd /s /q foo
if exist foo rd /s /q foo
if exist foo echo Help! & pause
ใช้del
ไฟล์ต่าง ๆ ข้างในแล้วrmdir
ทำการลบโฟลเดอร์
หากต้องการใช้rmdir
วิธีการในการลบไฟล์ทั้งหมดด้วยให้ใช้/S
สวิตช์ก่อนชื่อไดเรกทอรีและ/Q
เพื่อไม่ให้พรอมต์สำหรับการลบ นี่เป็นวิธีที่ดีที่สุดในการทำเช่นนี้เพราะคุณจะไม่พลาดไฟล์ใด ๆ ระมัดระวังการใช้สวิตช์ / Q เนื่องจากจะไม่เตือนคุณเกี่ยวกับคุณลักษณะของระบบหรือไฟล์ที่ซ่อน
โฟลเดอร์ Windows รุ่นเก่า (DOS, Windows 95/98 / ME) DELTREE
เป็นเทียบเท่ากับหรือRM
RMDIR
ฉันใช้DELTREE
กับเวิร์กสเตชัน Windows 7 ของฉันในไฟล์แบตช์ได้ดี
Deletes a directory and all the subdirectories and files in it.
To delete one or more files and directories:
DELTREE [/Y] [drive:]path [[drive:]path[...]]
/Y Suppresses prompting to confirm you want to delete
the subdirectory.
[drive:]path Specifies the name of the directory you want to delete.
Note: Use DELTREE cautiously. Every file and subdirectory within the
specified directory will be deleted.
ฉันคิดว่าคุณสามารถใช้สิ่งนี้:
msg*your file is going to delete
pause
del/s /q "C:\Users\Rd\Desktop\New folder (2)\"
rmdir /s /q "C:\Users\Rd\Desktop\New folder (2)\"
mkdir "C:\Users\Rd\Desktop\New folder (2)"