如何在批处理文件中组合数字和字符串

时间:2014-05-27 13:36:31

标签: windows string file batch-file join

我正在使用批处理文件来显示某种数字,例如 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

你能帮我编辑一下吗?

1 个答案:

答案 0 :(得分:2)

@echo off
    setlocal enabledelayedexpansion
    set "baseName=_test"
    set "extension=.txt"

    for /l %%a in (1 1 10) do (
        set "n=0%%a"
        echo !n:~-2!%baseName%%extension%
    )

当解析器到达代码块(在您的情况下为for和括号内的代码)时,在开始执行代码之前,所有变量读取都将替换为变量中的值。因此,如果在块内更改变量并且需要在同一块内检索值,则必须使用延迟扩展,告诉解析器引用的变量为!var!(而不是{{1不应该在分析时替换它,它的值应该在执行时访问。

因此,在此代码%var%%baseName%中使用通常的语法,因为它的值在%extension%代码块中没有变化,但for使用延迟扩展。它的值在块内变化,并且必须在同一块内访问该值。

0前缀和从变量右侧提取两个字符的串联确保了值1到9的初始值0的存在