2012-01-18 3 views
0

У меня, скажем, десять изображений, которые я хотел бы переименовывать в цикл за каждую ночь. Я написал пакетный файл, который выполняет следующие действия:Looping & Variable Arithmetic in DOS Batch

@echo off 
cls 
ren image10.jpg imagetemp.jpg 
ren image1.jpg image10.jpg 
ren image2.jpg image1.jpg 
ren image3.jpg image2.jpg 
ren image4.jpg image3.jpg 
ren image5.jpg image4.jpg 
ren image6.jpg image5.jpg 
ren image7.jpg image6.jpg 
ren image8.jpg image7.jpg 
ren image9.jpg image8.jpg 
ren imagetemp.jpg image9.jpg 
exit 

Я хотел бы переписать это петля, так как рассчитывать только увеличили мое изображение, но у меня возникают некоторые проблемы - мой сценарий просто завершает и Окно оболочки закрывается, не позволяя мне видеть какой-либо результат (я изменил все «rens» на «echos», чтобы увидеть, что будет с выходом). Вот моя текущая попытка:

cls 
ren image59.jpg imagetemp.jpg 
ren image1.jpg image59.jpg 

FOR %a IN (2 59) DO (
    set t = %a% - 1 
    ren image%a%.jpg image%t%.jpg 
) 
ren imagetemp.jpg image58.jpg 
exit 

Как я уже говорил, я получаю либо «а неожиданный», или когда я пытаюсь изменить его на %% а, это просто сбой, и окно закрывается. Какие-нибудь советы?

+1

Попробуйте ввести «паузу», чтобы узнать, что такое ошибки? Также попробуйте использовать '%% a', а не'% a% '. –

+0

Спасибо ... используя %% a работает, но я до сих пор не могу установить или получить доступ к t. – Darrrrrren

+0

Я только что провел небольшой эксперимент в cmd, t не работает, потому что партия не может обрабатывать числа. Если вы установите значение 259, то, если вы установите t на a-1, он будет эхо-сигнал как «259-1», а не 258. Также при использовании набора он работает только, когда у вас нет пробелов между знаками равенства , поэтому он будет работать только как 'set t =% a% - 1' –

ответ

3

Подвижные все изображения по одному, то первый один перемещается назад к последней позиции:

@echo off 
cls 
set count=59 
ren image1.jpg imagetemp.jpg 

for /L %%a IN (2,1,%count%) do call :rename %%a 

ren imagetemp.jpg image%count%.jpg 
goto :EOF 

:rename 
set /A t=%1-1 
ren image%1.jpg image%t%.jpg 

Литтл повышение добавил: установить счетчик на количество изображений, которые вы собираетесь перебрать.

+0

лучше, чем я собирался составлять = D – Mechaflash

+0

Ты лучше мужчина/женщина, чем я! Приветствия. Этот синтаксис DOS - причудливый материал. – Darrrrrren