2017-06-09 93 views
0

代碼是這樣的:批次:for循環不工作

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

最後,我想STR是一個很長的字符串。但它的價值只有abcdabcd。哪裏不對?這是爲什麼發生?

+4

您需要[延期擴展](https://ss64.com/nt/delayedexpansion.html) – npocmaka

+1

'for/L %% i in(1,1,4)do call set str = %% str %% %% str %%'應該做的伎倆,無論延遲擴展啓用/禁用。 – JosefZ

回答

0

@Barış,在詢問重複問題之前請使用搜索欄。


在腳本中,你將需要delayedexpansion,啓動它,使用setlocal enabledelayedexpansion

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

通知%str%成爲!str!(!意味着擴大變量在命令運行時,不逐步時間。)

這樣做的另一種方式是通過@JosefZ

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

提到這使用call的特殊變量擴展技巧。