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-Key: 65788

Url: https://administrator.de/contentid/65788

Printed on: April 24, 2024 at 23:04 o'clock

Member: Biber
Biber Aug 09, 2007 at 04:56:36 (UTC)
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
Member: Dynadrate
Dynadrate Aug 09, 2007 at 06:39:27 (UTC)
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")
Member: Grober
Grober Aug 09, 2007 at 12:30:24 (UTC)
Goto Top
Moin,

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

Stephan