ชุดสคริปต์เพื่อลบไฟล์


96

ฉันมีชุดสคริปต์ดังนี้

D:
del "D:\TEST\TEST1\Archive\*.TSV" 
del "D:\TEST\TEST1\Archive\*.TXT"
del "D:\TEST\TEST2\Archive\*.TSV" 
del "D:\TEST\TEST2\Archive\*.TXT"
del "D:\TEST\TEST 100%\Archive\*.TSV" 
del "D:\TEST\TEST 100%\Archive\*.TXT"

โค้ดด้านบนลบทั้งหมด ".txt" และ ".tsv" TEST 100%ไฟล์จากโฟลเดอร์ทั้งหมดยกเว้นจากโฟลเดอร์ สำหรับการลบไฟล์จากTEST 100%ฉันได้รับข้อผิดพลาดเป็นThe Path could not be found. ฉันเดาว่าสัญลักษณ์% ในชื่อโฟลเดอร์สร้างปัญหา ใครช่วยแนะนำวิธีแก้ไขปัญหาและลบไฟล์ออกจากโฟลเดอร์ได้TEST 100%ไหม


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

คำตอบ:


112

คุณต้องหนี% กับอีก ...

del "D:\TEST\TEST 100%%\Archive*.TXT"

ฉันไม่สามารถพูดถึง OP ได้ แต่ในระบบของฉันไม่มีปัญหาในการค้นหาเส้นทางที่มี% และการหลีกเลี่ยงด้วย %% ทำให้ระบบไม่สามารถค้นหาได้
RonaldBarzell

@ user1161318 - ฉันได้ทดสอบบน Windows 7 หากไม่มีการหลีกเลี่ยงในไฟล์แบตช์ผลลัพธ์จะเป็น "ระบบไม่พบเส้นทางที่ระบุ" ตามที่ฉันโพสต์มันใช้งานได้
Russ Freeman

โอเคบน XP ฉันได้ผลลัพธ์ที่ตรงกันข้าม พบเส้นทางที่ดีด้วย% แต่ไม่พบด้วย %%
RonaldBarzell

5
ฉันเดาว่าคุณกำลังทำจากพรอมต์คำสั่งไม่ใช่จากไฟล์แบตช์
Russ Freeman

2
คุณคงพูดถูก ฉันลืมไปว่าภายในไฟล์แบตช์% เป็นคำนำหน้าตัวแปรและคุณต้องหลีกเลี่ยงมัน +1
RonaldBarzell

12

มีหลายวิธีในการทำสิ่งต่างๆในชุดดังนั้นหากการหนีด้วยเปอร์เซ็นต์สองเท่า%%ไม่ได้ผลสำหรับคุณคุณสามารถลองทำสิ่งต่อไปนี้:

set olddir=%CD%
cd /d "path of folder"
del "file name/ or *.txt etc..."
cd /d "%olddir%"

วิธีการทำงาน:

set olddir=%CD%ตั้งค่าตัวแปร"olddir"หรือชื่อตัวแปรอื่น ๆ ที่คุณต้องการให้กับไดเร็กทอรีไฟล์แบตช์ของคุณถูกเรียกใช้

cd /d "path of folder"เปลี่ยนไดเร็กทอรีปัจจุบันที่แบตช์จะดู เก็บใบเสนอราคาและเปลี่ยนเส้นทางของโฟลเดอร์ที่คุณต้องการ

del "file name/ or *.txt etc..."จะลบไฟล์ในไดเร็กทอรีปัจจุบันที่แบตช์ของคุณกำลังดูอยู่อย่าเพิ่งเพิ่มพา ธ ไดเร็กทอรีก่อนชื่อไฟล์และเพียงแค่มีชื่อไฟล์เต็มหรือเพื่อลบไฟล์หลายไฟล์ที่มีนามสกุลเดียวกัน*.txtหรือนามสกุลใดก็ได้ที่คุณต้องการ

cd /d "%olddir%"รับตัวแปรที่บันทึกด้วยพา ธ เก่าของคุณและกลับไปที่ไดเร็กทอรีที่คุณเริ่มต้นแบตช์ด้วยมันไม่สำคัญหากคุณไม่ต้องการให้แบตช์กลับไปที่พา ธ ไดเร็กทอรีก่อนหน้าและตามที่ระบุไว้ก่อนที่จะเปลี่ยนชื่อตัวแปรเป็น สิ่งที่คุณต้องการโดยเปลี่ยนไฟล์set olddir=%CD% line.


pushd "folder" && del "filename" & popdนี้จะกระทำที่ดีที่สุดผ่าน
Nuno André

10

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

cd C:\Users\User\Detsktop\
rd /s /q SOFTWARE

สิ่งนี้จะลบโฟลเดอร์ทั้งหมดที่เรียกว่าซอฟต์แวร์รวมถึงไฟล์และโฟลเดอร์ย่อยทั้งหมด

ตรวจสอบให้แน่ใจว่าคุณลบโฟลเดอร์ที่ถูกต้องสาเหตุนี้ไม่มีตัวเลือกใช่ / ไม่ใช่


4

พิจารณาว่าไฟล์ที่คุณต้องการลบมีนามสกุลtxtและอยู่ในตำแหน่งที่ตั้งD:\My Folderจากนั้นคุณสามารถใช้โค้ดด้านล่างในไฟล์ bat

cd "D:\My Folder"
DEL *.txt 

-7

ในรหัสแบทช์เส้นทางของคุณไม่ควรมี Space ดังนั้นโปรดเปลี่ยนชื่อโฟลเดอร์ของคุณจาก "TEST 100%" เป็น "TEST_100%" และรหัสใหม่ของคุณจะเป็น "D: \ TEST \ TEST_100% \ Archive * .TXT"

หวังว่านี่จะช่วยแก้ปัญหาของคุณได้


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