เป็นไปได้หรือไม่ที่จะส่งรายชื่อไฟล์ไปยัง RMDIR บน Windows


9

ฉันกำลังเขียนไฟล์แบตช์สำหรับพรอมต์คำสั่ง Windows เพื่อลบไดเรกทอรีทั้งหมดที่ตรงกับนิพจน์บางอย่าง

ฉันก่อนใช้DIRเพื่อกลับรายการธรรมดาของไดเรกทอรีที่ตรงกับการแสดงออก ฉันต้องการไพพ์เอาต์พุตแต่ละบรรทัดลงในคำสั่ง RMDIR เช่นนี้:

DIR *.delete /A:D /B /S | RMDIR /S /Q

อย่างไรก็ตามคำสั่งข้างต้นดูเหมือนจะไม่ทำงาน ฉันไม่เข้าใจว่าทำไมสิ่งนี้ถึงใช้งานไม่ได้และจะขอบคุณทุกคนที่สามารถให้คำอธิบายได้

คำตอบ:


5

คุณสามารถใช้สิ่งต่อไปนี้ในแบตช์ไฟล์ของคุณ:

FOR /f "tokens=*" %%a in ('dir *.delete /A:D /B /S') DO RMDIR /S /Q %%a

นี้ใช้FORคำสั่งเพื่อห่วงผ่านผลลัพธ์ของคำสั่งที่กำหนด (ในกรณีนี้dir *.delete /A:D /B /Sและสำหรับแต่ละรายการกลับมาก็จะเรียกใช้คำสั่งที่ระบุไว้ด้วยคำสั่งทำRMDIR /S /Q. %%aรายการที่ถูกอ้างถึงโดยตัวแปร

เหตุผลที่มันไม่ทำงานเพียงแค่ท่อDIRเอาท์พุทเข้าไปRMDIRเป็นเพราะคุณกำลังส่งการส่งออกทั้งหมด (หลายบรรทัด) RMDIRทั้งหมดในครั้งเดียวเป็นพารามิเตอร์เดียว FORแบ่งคำสั่งลงการส่งออกนี้ iterates ผ่านแต่ละรายการแล้วส่งมาที่RMDIRหนึ่งโดยหนึ่ง

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