2017-06-09 2 views
0

-Code ist dies:Batch: for-Schleife nicht funktioniert

@echo off 
set str=abcd 
for /L %%i in (1,1,4) do set str=%str%%str% 
echo %str% 

Am Ende möchte ich str eine lange Zeichenfolge sein. Aber sein Wert ist nur abcdabcd. Was ist falsch? Warum passiert dies?

+4

Sie brauchen [verzögerte Erweiterung] (https://ss64.com/nt/delayedexpansion.html) – npocmaka

+1

'für/L %% i in (1,1,4) do call set str = %% str %% %% str %% 'sollte den Trick machen, unabhängig von verzögerter Expansion aktiviert/deaktiviert. – JosefZ

Antwort

0

@ Barış, bitte benutzen Sie die Suchleiste vor der Frage doppelte Fragen.


Im Skript werden Sie delayedexpansion, müssen sie anfangen, setlocal enabledelayedexpansion verwenden.

@echo off 
setlocal enabledelayedexpansion 
set str=abcd 
for /L %%i in (1,1,4) do set str=!str!!str! 
echo %str% 

Hinweis %str% wird !str! (! Bedeutet, die Variable auf Befehl Laufzeit zu erweitern, nicht die Zeit auslaufen.)

Ein anderer Weg, dies zu tun, von @JosefZ erwähnt wird

for /L %%i in (1,1,4) do call set str=%%str%%%%str%% 

Dies verwendet call 's spezielle Variable Expansion Trick.

Verwandte Themen