xesued
Goto Top

Variablenverknüpfung in for-Schleife

Ich möchte in einer For-Schleife einen String ("quelle") zusammenbauen, aber trotz stundenlangem googeln finde ich nicht die korrekte Syntax.

set pfad=:\sources
for %%d in (C D E F) do (
          set quelle=%%d%pfad%
          echo %%d %quelle%
          )

Zuerst passiert nichts, beim zweiten Aufruf bekomme ich folgende Ausgabe:

C F:\sources
D F:\sources
E F:\sources
F F:\sources

Es wird offensichtlich erst ein Wert in die Variable "quelle" geschrieben, nachdem die Schleife durchlaufen ist.
Was mache ich falsch?

Content-ID: 282862

Url: https://administrator.de/forum/variablenverknuepfung-in-for-schleife-282862.html

Ausgedruckt am: 11.04.2025 um 10:04 Uhr

Xesued
Xesued 14.09.2015 um 23:04:01 Uhr
Goto Top
Ja, kaum hat man eineFrage gepostet, findet man die Lösung selber... -_-
Sorry.

Die Lösung war, die Variable in einer Subroutine zusammenzubauen:

set pfad=:\sources
for %%d in (C D E F) do (
	call:pfadbauen %%d
          )
goto ende
:pfadbauen
	set quelle=%1%pfad%
	echo %quelle%
goto:eof
:ende
bastla
Lösung bastla 15.09.2015 aktualisiert um 00:45:12 Uhr
Goto Top
Hallo Xesued und willkommen im Forum!

2 Anmerkungen dazu:

  • Oft ist es gar nicht nötig, eine zusätzliche Variable zu erzeugen - Du könntest etwa direkt in einer Ausgabe oder einem Befehl eine Konstruktion wie in Deinem Beispiel "%%d%pfad%" nutzen.

  • Wenn innerhalb einer Schleife (oder auch etwa eines if-Blocks) erstellte oder veränderte Variablen sofort verwendet werden sollen, könntest Du delayedExpansion ("verzögerte Variablenerweiterung") verwenden - beschrieben zB in Tutorial zur FOR-Schleife ...

Grüße
bastla