2017-06-09 17 views
0

コードを動作していないため、このです:終わりバッチ:ループが

@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

'/ L %% i for(1,1,4)doコールセットstr = %% str %% %% str %% 'は遅延拡張の有効/無効にかかわらず、このトリックを行う必要があります。 – JosefZ

答えて

0

@Barışの場合は、と重複した質問を入力する前に検索バーを使用してください。


スクリプトでは、あなたはそれを開始するために、 setlocal enabledelayedexpansionを使用し、 delayedexpansionが必要になります。

@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の特殊な変数拡張トリックを使用します。

関連する問題