ชุด windows วนซ้ำไฟล์ที่เปลี่ยนชื่อด้วย padding 0


0

ฉันพยายามทำบทเล็ก ๆ นี้ ฉันต้องการขอชื่อผู้ใช้เป็นหลักแล้วในไดเรกทอรีนั้นฉันเปลี่ยนชื่อ pngs ทั้งหมดเป็นชื่อ + หมายเลขโดยที่ตัวเลขนั้นเป็นตัววนซ้ำแบบง่าย 3 หลัก (000,001,002,003, ... , 010, ... 999)

@echo off
setlocal EnableDelayedExpansion
set /P id=Enter name:
set /a i=0
for %%f in (*.png) do (
set "n=000000%i%"
set "pad=!n:~-3!"
ren %%f %id%!pad!.png
set /a "i+=1"
    )
PAUSE

ด้วยเหตุผลบางอย่าง iterator i มักจะเป็น 0 เสมอดังนั้นจึงมีการเปลี่ยนชื่อไฟล์เพียง 1 ไฟล์ในขณะที่ไฟล์อื่น ๆ นั้นไม่ได้มีชื่อเดียวกัน

ฉันค้นหามากใน webz, infact ฉันรู้ (และยังรู้) น้อยมากเกี่ยวกับเรื่องนี้สิ่งนี้เกือบจะเป็นแฟรงเกนสไตน์และมักจะรหัส frankensteins ไม่ทำงาน: /

ขอบคุณมาก


1
ถอนหายใจ ... นี่คือปัญหาหมายเลข 1 ที่ผู้คนใหม่ ๆ เผชิญกับปัญหา คำถามที่เกี่ยวข้องเกิดขึ้นเกือบทุกวันใน StackOverflow ค้นหา "การขยายแบตช์ล่าช้า" และดูว่าคุณไม่สามารถหาคำตอบได้
dbenham

พบว่าการทำสิ่งที่มีการนอนหลับ 3 ชั่วโมงไม่ได้ช่วยดังนั้นตอนนี้หลังจากนอนหลับฉันอ่านวลีเดิมอีกครั้ง "สังเกตว่าภายในลูปเราใช้! variable! แทนที่จะเป็น% variable%" และมันก็คลิกฉันว่าฉันต้องการเปลี่ยน 000% i% เป็น 000! i !, ขอบคุณ ฉันควรทำอย่างไรกับโพสต์นี้ ลบมัน?
guestPersonDude

คำตอบ:


1

นี่คือสคริปต์ที่จะค้นหาไฟล์ที่หายไปทั้งหมดในลำดับต่อเนื่อง:

@echo off
set count = 1208
setlocal ENABLEDELAYEDEXPANSION
FOR /L %%f in (0,1,%count%) DO (
    set "num=00000%%f"    
    set "num=!num:~-4!"
    IF NOT EXIST img!num!.png (
        echo img!num!.png
    )
) 
endlocal

สังเกตเห็นภายในลูปที่คุณต้องใช้! x! แทนที่จะเป็น% x% ​​เพื่อรับตัวแปรล่าช้าแบบโลคอล แต่ตัวแปรลูปเองจะถูกเรียกโดย %% x เสมอ

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