grober
Goto Top

Counter wird in der For Schleife nicht erhöht

Ich versuche mich schon seit gestern an einem Skript, was Bilder in einem Ordner umbenennt und am Ende des neuen Dateinamens eine größer werdende Zahl anhängt. Funktioniert eigentlich auch alles, bis auf die Erhöhung des größer werdenden Zahl. Die bleibt imm er gleich aus irgendeinem Grund.

So sieht das Skript bis jetzt aus.


@echo OFF

dir "%CD%\*.jpg" /b /s > C:\temp\logo2.txt
set /A i=1
prompt %h
echo %h
FOR /F "tokens=*" %%g IN (c:\temp\logo2.txt) DO (
rename "%%g" "4-3-2_%i%.jpg"
set /A i=%i%+1
)

Ich hoffe, dass irgendjemand mir bei diesem Problem helfen kann


Stephan

Content-ID: 65788

Url: https://administrator.de/forum/counter-wird-in-der-for-schleife-nicht-erhoeht-65788.html

Ausgedruckt am: 04.04.2025 um 21:04 Uhr

Biber
Biber 09.08.2007 um 06:56:36 Uhr
Goto Top
Moin Grober,

willkommen im Forum.

Für Dein Problem gibt es hier im Forum schon ein paar Erklärungen.
Befrage bitte die Forumssuchfunktion mal nach "verzögerter Variablenauflösung" oder neudeutsch "DelayedExpansion".
Eigentlich vollständig angesprochen ist es auch in der eingebauten Hilfe zur FOR-Anweisung ("FOR /?") am CMD-Prompt.

Grundsätzlich zwei praktikable Lösungsstrategien:
  • mit geCALLtem Block innerhalb der Batchdatei
@ECHO OFF & setlocal
dir "%CD%\*.jpg" /b /s > C:\temp\logo2.txt  
set /A i=1
prompt %h
echo %h
FOR /F "tokens=*" %%g IN (c:\temp\logo2.txt) DO call :RenameBlock "%%g"  
goto :eof
:: das "goto :eof" in der Vorzeile ist das Ende des Batches 
:RenameBlock Parameter 1 ist das %%g aus der FOR /F-Anweisung
rename %1 "4-3-2_%i%.jpg"  
set /A i=%i%+1
goto :eof
::Das "goto :eof" in der Vorzeile ist das Ende des Blocks ":RenameBlock" 

  • mit DelayedExpansion
@ECHO OFF % EnableDelayedExpansion
dir "%CD%\*.jpg" /b /s > C:\temp\logo2.txt  
set /A i=1
prompt %h
echo %h
FOR /F "tokens=*" %%g IN (c:\temp\logo2.txt) DO (  
rename "%%g" "4-3-2_!i!.jpg"  
set /A i=!i!+1
)
[Beides ungetestete Skizzen]

Grüße
Biber
Dynadrate
Dynadrate 09.08.2007 um 08:39:27 Uhr
Goto Top
Nebenbei, für diesen Zweck gibts bei XP auch ne eingebaute Funnktion: Bilder markieren, oberstes anklicken und so benennen: %BildName%(%LfdNr%) (ggf.".jpg")
Grober
Grober 09.08.2007 um 14:30:24 Uhr
Goto Top
Moin,

also das erste Skript funktioniert wunderbar. Danke für die Hilfe

Stephan