Eine Zeichenfolge innerhalb einer Batch-Schleife kann nicht verkettet werden

1161
user4450016

Ich habe jetzt eine Weile damit zu kämpfen, und ich kann nicht verstehen, warum.

Ich habe diese Batchdatei:

@echo on  setlocal enabledelayedexpansion  for /F %%x in (FileList.txt) do ( for /L %%i in (1,1,16) do ( if %%i LSS 10 (set ctr=0%%i) else (set ctr=%%i) echo !ctr! set target = \\Server-!ctr! password /user:domain\username echo %target% echo net use z: %target% echo copy %%x "z:%%~pnx" /Y echo net use z: /delete ) ) 

Meine ctr-Variable wird entsprechend gesetzt, aber wenn ich versuche, sie zu verketten, bekomme ich nur: \ Server-! Ctr! Passwort / Benutzer: Domäne \ Benutzername. Ich habe%! Ctr!%,% Ctr%, %% ctr, %% ctr %% versucht, alles nur, um die literalen Zeichen zurückzugeben - nicht den Wert. Interessanterweise, wenn ich den Befehl setze, mein Echo! Ctr! gibt den Wert zurück. Ich habe auch versucht, die eingestellten Parameter in Anführungszeichen zu setzen - mit den gleichen Ergebnissen, nur Anführungszeichen.

Was vermisse ich?

1

1 Antwort auf die Frage

0
DavidPostill

Was vermisse ich

Sie verwenden den setBefehl nicht korrekt.

set target = \\Server-!ctr! password /user:domain\username 

Dadurch wird eine Variable mit dem Namen "target" erstellt (beachten Sie das zusätzliche Leerzeichen nach dem Namen).

Außerdem enthält die rechte Seite des Ausdrucks Leerzeichen, sodass Sie einige Anführungszeichen benötigen.

Zusätzliche Leerzeichen um den Variablennamen oder die Zeichenfolge werden nicht ignoriert. SET vergibt keine zusätzlichen Leerzeichen wie viele andere Skriptsprachen.

Quelle eingestellt

Versuchen Sie den folgenden Ersatz:

set target="\\Server-!ctr! password /user:domain\username" 

Sie verwenden die verzögerte Erweiterung auch nicht korrekt.

echo %target% echo net use z: %target% 

Bei einer verzögerten Erweiterung werden Variablen zur Ausführungszeit und nicht zur Analysezeit erweitert.

Quelle aktivierte verzögerte Erweiterung

Das sollte sein:

echo !target! echo net use z: !target! 

Lesen Sie weiter