So verketten Sie sich wiederholende Zeichenfolgen in Batch-Skript

2959
Jim Fell

Ich versuche, einen sich wiederholenden String zu verketten, abhängig vom ersten Parameterwert, der beim Aufruf an das Skript übergeben wird. Dieser Wert gibt die Anzahl der Verzeichnisebenen an, aus denen sich das aktuelle Verzeichnis aus dem Repository-Stamm befindet, in dem der Benutzer arbeitet. Dies ist mein bisheriges Skript:

set REPO_ROOT="%~1" set "UPPATH=.\" set "UPDIR=..\" for /l %%i in (1,1,%REPO_ROOT%) do set "UPPATH=%UPPATH%%UPDIR%" echo %UPPATH% 

Mein Problem ist, dass, wenn ich set "UPPATH=%UPPATH%%UPDIR%"einige Male hart codiert, es gut funktioniert, aber es scheint nicht in der Schleife arbeiten zu wollen. Jede Überlegung oder Anregung, wie diese Schleife mit dem übergebenen Parameter zum Laufen gebracht werden kann, würde sich freuen. Vielen Dank.

1

1 Antwort auf die Frage

2
DavidPostill

Es funktioniert gut, scheint aber nicht in der Schleife arbeiten zu wollen.

Sie müssen einstellen EnableDelayedExpansion.


EnableDelayedExpansion

Durch die verzögerte Erweiterung werden Variablen zur Ausführungszeit und nicht zur Analysezeit erweitert. Diese Option wird mit dem SETLOCALBefehl aktiviert. Wenn die verzögerte Erweiterung wirksam ist, können Variablen mit! Variable_name! Referenziert werden. (zusätzlich zu den normalen% Variablennamen%)

Beispiel

Setlocal EnableDelayedExpansion

Quelle EnableDelayedExpansion

In der Antwort von Joey finden Sie eine ausführlichere Erklärung, warum dies erforderlich ist.


Lesen Sie weiter