ฉันกำลังพยายามหาวิธีให้แบตช์สคริปต์เขียนทับทุกอินสแตนซ์ของไฟล์ที่ไม่ใช่ศูนย์ไบต์ภายในไดเร็กทอรีเฉพาะและโฟลเดอร์ย่อย ฉันเดาว่าเนื่องจากฉันกำลังมองหาไฟล์ที่ไม่ใช่ศูนย์ฉันอาจจะวนลูปด้วยการหลบหนีหากไม่พบไฟล์ที่มีขนาดไม่เป็นศูนย์
ตัวอย่าง เขียนทับทุกอินสแตนซ์ของ example.txt โดยที่ขนาดไฟล์ไม่เป็นศูนย์:
ง:\
\---โฟลเดอร์ย่อย1
| example.txt <10 ไบต์>
|
\---โฟลเดอร์ย่อย2
| example.txt <0 ไบต์>
|
\---โฟลเดอร์ย่อย1
example.txt <20 ไบต์>
ในตัวอย่าง D:\Subfolder1\example.txt และ D:\Subfolder2\Subsubfolder1\example.txt จะถูกเขียนทับ แต่ D:\Subfolder2\example.txt จะไม่เปลี่ยนแปลง
ขอบคุณ @NiKiZe สำหรับความช่วยเหลือทั้งหมดของคุณ!
รหัสการทำงาน:
@ปิดเสียงสะท้อน
ตั้งค่า DPATH=%~dp0
สำหรับ /R "%DPATH%" %%F ใน (*** ดูด้านล่าง) ทำถ้า %%~zF จีทีอาร์ NEQ 0 CALL :NonEmptyFile "%%~F"
GOTO : EOF
:NonEmptyFile
ECHO มีไฟล์ที่ไม่ว่างเปล่า: %1
โทร :อฟ
*** แทนที่ด้วยชื่อไฟล์ที่คุณต้องการแทนที่ ต้องแน่ใจว่าใช้อักขระตัวแทนตัวเดียวที่ไหนสักแห่ง (ฉันใช้มันในนามสกุล - เช่น ถ้าฉันกำลังค้นหา example.txt ฉันจะแทนที่ * ด้วย example.t ?t)