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

cidc1ykv  于 2023-02-25  发布在  Windows
关注(0)|答案(2)|浏览(322)

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

你能帮我编辑一下吗?

cgyqldqp

cgyqldqp1#

@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!(而不是%var%)的变量不应该在解析时被替换,其值应该在执行时被访问。
因此,在此代码中,%baseName%%extension%以常规语法使用,因为其值在for代码块内不改变,但!n!使用延迟扩展。其值在块内改变,并且必须在同一块内访问此值。
串联0前缀并从变量右侧提取两个字符可确保值1到9的初始值为0

x8diyxa7

x8diyxa72#

尝试使用%%x而不是%x

FOR /L %%x IN (1,1,10) DO (
set "extension=.txt" 
set "fullname=%%x%_test%extension%" 
echo.%fullname%
)

相关问题