Wie bei Windows: Variablen innerhalb von If-Anweisungen so verhält es sich auch innerhalb von For-Anweisungen in Batch-Skripten.

Einleitend muss

setlocal enabledelayedexpansion

verwendet werden, um dann mit Variablen in “for…” weitermachen zu können. Dabei muss innerhalb der For-Anweisungen ebenfalls % durch ! ersetzt werden.

Also statt “%variable%” dann eben “!variable!”.

Ein Beispiel aus der Praxis mit einem “Extra”

In Zeile 9 aus dem unteren Skript-Auszug wurde es dann zunächst etwas kniffelig, da weder in der Hilfe oder auf die Schnelle im Netz dazu etwas gefunden werden konnte, wie denn nun der Umgang mit “set” beim Bearbeiten von Variablen aussehen muss.

Außerhalb von If, For, etc. würde so ein Befehl so aussehen:

set value=%value:~19,2%

Innerhalb von If, For, usw. dann so:

set value=!value%:~19,2!

Anbei ein Auszug aus einem Skript:

rem Werte zeilenweise einlesen und auf eigentlichen Wert (in °C) kuerzen

 for /f "delims=" %%v in (temp.txt) do (

  rem Variable uebernehmen
   set value=%%v

  rem Variable auf den eigentlichen Wert (ohne Text) kuerzen
   set value=!value%:~19,2!

  rem Laufwerk hochzaehlen
   set /a drive=drive+1

  rem Wert-Variable pro Laufwerk erstellen
   set /a value!drive!=!value!
)

Auf diese Weise wird aus

Drive Temperature :43C (109.40 F)

nur noch

43