Я пытался сделать этот маленький сценарий. я в основном хочу попросить у пользователя имя, а затем в этом каталоге я переименую все pngs в name+number, где число - это просто 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

по какой-то причине итератор i всегда равен 0, поэтому только 1 файл переименовывается, в то время как другие arnt, поскольку они будут иметь одинаковые имена.

я много раз искал в интернете, на самом деле я знал (и все еще знаю) об этом очень и очень мало, этот материал - почти Франкенштейн, и обычно код Франкенштейнов не работает:/

Спасибо большое

1 ответ1

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.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .