“for”循环不按需要工作

时间:2017-09-01 11:45:01

标签: batch-file

我有以下代码:

Hello1Hello2Hello3Hello4Hello5

为此,我想要一个输出:

Hello1Hello1Hello1Hello1Hello1

但相反,我得到的结果为:

bundle_id  asset_id  price_id
1           2        1
1           1        1
1           4        1
2           2        1
2           3        1
3           2        1
3           1        1

有人能告诉我怎么办?

2 个答案:

答案 0 :(得分:3)

你需要:

setlocal enableextensions enabledelayedexpansion
set b=Hello
set c=0
set d=5
for /l %%x in (1,1,%d%) do (set /a c=c+1 & set "a=!a!!b!!c!")
echo %a%
endlocal

! %变体会在代码执行时扩展变量,而%会在代码解析时展开。 而且,由于解析发生在整个语句上(从for到右括号),你只能获得原始值。

请注意,对于不变量b 在大多数情况下你会期待的。

你会注意到我也改变了c的初始值,以获得你想要的输出。事实上,你会得到2,3,4,5,6而不是1,2,3,4,5

答案 1 :(得分:1)

我认为这就是你想要的:

@Echo Off
Set "a="
Set "b=Hello"
Set "c=1"
Set "d=5"
For /L %%A In (%c%,1,%d%) Do Call Set "a=%%a%%%b%%%A"
If Defined a Echo %a%
Pause

或者:

@Echo Off
Set "a="
Set "b=Hello"
Set "c=1"
Set "d=5"
For /L %%A In (1,%c%,%d%) Do Call Set "a=%%a%%%b%%%A"
If Defined a Echo %a%
Pause