我有以下代码:
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
有人能告诉我怎么办?
答案 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