我正在使用批处理文件来显示某种数字,如00_test.txt 01_test.txt ...10_test.txt 11_test.txt因此,这是我的代码。但我不能显示为我的期望
FOR /L %%x IN (1,1,10) DO (
set "extension=.txt"
set "fullname=%x%_test%extension%"
echo.%fullname%
)
上述代码的结果为_test.txt _test_txt
,但预期结果为
00_test.txt 01_test.txt
你能帮我编辑一下吗?
2条答案
按热度按时间cgyqldqp1#
当一段代码(在你的例子中是
for
和括号内的代码),那么在开始执行代码之前,所有的变量读取都被替换为变量中的值。因此,如果一个变量在块内被更改,并且需要在同一个块内检索该值,那么就需要使用延迟扩展,告诉解析器被引用为!var!
(而不是%var%
)的变量不应该在解析时被替换,其值应该在执行时被访问。因此,在此代码中,
%baseName%
和%extension%
以常规语法使用,因为其值在for
代码块内不改变,但!n!
使用延迟扩展。其值在块内改变,并且必须在同一块内访问此值。串联0前缀并从变量右侧提取两个字符可确保值1到9的初始值为0
x8diyxa72#
尝试使用
%%x
而不是%x
: