批量 - 设置变量错误;变量(%)(字符串)(%% A)(%)?

时间:2013-12-11 09:22:50

标签: variables batch-file for-loop set

在我正在处理的批处理脚本上,我遇到了一些问题。 我想要发生的是将变量设置为自身,但在其后跟一个百分号,一个字母,一个来自for /l (#,#,#)循环的数字,然后是另一个百分号。 我的代码目前如下;

set value1=1
set value2=10
for /l %%a in (%value1%,1,%value2%) do (
set variable1=%variable1%%b%%a%
)

这根本没有给我%variable1%的值,即使在循环10次之后也是如此。我已经尝试将'variable1 ='(没有撇号)添加到顶部,但是这给了我相同的结果。在四处搜索之后,我想我应该尝试取消在'b'之前和'a'之后的%' - 在他们面前使用%',并且我的代码最终会像这样; < / p>

set value1=1
set value2=10
set variable1= 
for /l %%a in (%value1%,1,%value2%) do (
set variable1=%variable1%%b%%a%
)

这是我得到的最接近的,但%variable1%会将值更改为'%b1%',然后是'%b2%',然后是'%b3%'等。而不是将它们彼此相邻

我想要的结果是,在循环结束时,%​​variable1%的值为; %b1%%b2%%b3%%b4%%b5%%b6%%b7%%b8%%b9%%b10%

我的代码出错了?它似乎应该给我我想要的输出,但很明显,它不是。

先谢谢了,

1 个答案:

答案 0 :(得分:0)

试试这个:

@echo off
setlocal EnableDelayedExpansion

set value1=1
set value2=10
set variable1= 
for /l %%a in (!value1!,1,!value2!) do (
    set percent=%%
    set variable1=!variable1!!percent!b%%a!percent!
)
echo !variable1!

您必须添加setlocal EnableDelayedExpansion,因为这有助于expand the variable at execution time rather than at parse time