Batch Laufvariable in for-Schleife für Dateinamen

Beitrag

Fleet Admiral
Registriert
Nov. 2011
Beiträge
10.730
Hallo,
ich hab folgende Batch:
Code:
@echo off

set /a count=1
for %%m in (*.ass) do (
echo bearbeite "%%m"
cpp "%cd%\%%m" -D "Arial=LTFinnegan Medium" -o "%cd%\%count%.ass"
set /a count=%count%+1
echo %count%
)
echo %count%
pause
Funktioniert aber nicht. Innerhalb der Schleife bleibt count 1, das echo nach der Schleife gibt mir 'ne 2 aus. Wie ich gelesen habe, kann die For-Schleife in Batch sowas nicht. Deswegen brauche ich jetzt eine Alternative.
Was ich machen möchte: Die 1. bearbeitete Datei soll "1.ass" heißen, die 2. "2.ass" usw.
Die Dateien im Ordner heißen alle "[Index].deDE.ass" also könnte ich vllt. auch %%m irgendwie verwenden, weis aber nicht wie. Stringmanipulation à la var:~n,m funktioniert ja nicht mit Skriptvariable, oder?
 
Ja, wobei der Scripting Host relativ einfach ist... läuft halt per VB Script oder JScript und die ganzen Datei-Sachen über das FSO aka File System Object. Damit sollte man recht schnell zu einem Ergebnis kommen.

Die CMD ist von ihren Fähigkeiten leider recht eingeschränkt, der Ersatz der dafür kam ist dann die Power Shell, wobei die zwar sehr mächtig aber auch recht komplex ist.
 
Beitrag schrieb:
Innerhalb der Schleife bleibt count 1, das echo nach der Schleife gibt mir 'ne 2 aus. Wie ich gelesen habe, kann die For-Schleife in Batch sowas nicht.
Natürlich kann sie das. Damit man innerhalb einer Schleife mit geänderten Werten arbeiten kann, muss man das lediglich vorher mit
Code:
setlocal enableDelayedExpansion
aktivieren. Mit !variable! kann man dann auf den geänderten Wert der Variable zugreifen - also bei Deinem Codefragment mit !count!.

Code:
@echo off
setlocal enableDelayedExpansion
 
set /a count=1
for %%m in (*.ass) do (
echo bearbeite "%%m"
cpp "%cd%\%%m" -D "Arial=LTFinnegan Medium" -o "%cd%\!count!.ass"
set /a count=!count!+1
echo !count!
)
echo %count%
pause
 
Zuletzt bearbeitet: (Code ergänzt)
Zurück
Oben