2010-11-27 7 views
0

Я уверен, что это что-то очевидное, но я не могу понять, что по какой-то причине командный файл, который я наклеил ниже, всегда запускается дважды, а не один раз, когда он попадает : переименование. Может ли кто-нибудь сказать мне, в чем проблема? Это связано с 2 другими вопросами - Looking for a way to execute a batch file once a folder hits 10 files и copy and rename files of a certain extension via batch fileПопытка выяснить, почему пакетный файл работает дважды

Вот командный файл --->

rem Counting files... 
set /a count = 0 
for /f "tokens=*" %%P IN ('dir "H:\" /A /b') do (set /a count += 1) 



rem 5 or more files? 



if %count% GEQ 5 call :rename 



:rename 
SET count=1 
FOR /f "tokens=*" %%G IN ('dir /b *.jpg') DO (call :rename_next "%%G") 

goto:copy 

:rename_next 
ren "%1" %count%.jpg 

Pause 
set /a count+=1 

goto:eof 

:copy 
xcopy c:\photo\*.jpg c:\photo\files /Y 
Pause 
+0

спасибо, что работал и смысл. Я добавил goto: eof, чтобы выйти. – samsam 2010-11-27 23:28:02

ответ

0

Эта линия:

if %count% GEQ 5 call :rename 

зовет :rename. После переименования возвращается код после этого, если это снова :rename.

Заменить этот код, чтобы увидеть, что происходит:

echo before call 
if %count% GEQ 5 call :rename 
echo after call 
Смежные вопросы