2010-11-27 31 views
0

Je suis sûr que c'est quelque chose d'évident, mais je n'arrive pas à comprendre, pour une raison quelconque, le fichier batch que j'ai collé ci-dessous tourne toujours deux fois au lieu d'une fois :Renommer. Quelqu'un pourrait-il me dire quel est le problème ici? Ceci est lié aux 2 autres questions - Looking for a way to execute a batch file once a folder hits 10 files et copy and rename files of a certain extension via batch fileEssayer de comprendre pourquoi le fichier batch fonctionne deux fois

Voici le fichier batch --->

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

merci, qui a travaillé et avait un sens. J'ai ajouté un goto: eof pour sortir. – samsam

Répondre

0

Cette ligne:

if %count% GEQ 5 call :rename 

appelle :rename. Après renommage renvoie, le code continue après cela si, qui se trouve à nouveau :rename.

Remplacer avec ce code pour voir ce qui se passe:

echo before call 
if %count% GEQ 5 call :rename 
echo after call