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

标签 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

你能帮我编辑一下吗?

最佳答案

@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 和括号内的代码)时,在开始执行代码之前,所有变量读取都将替换为变量中的值.因此,如果一个变量在 block 内发生变化,并且需要在同一 block 内检索值,则有必要使用延迟扩展,告诉解析器引用为 !var! 的变量(而不是 %var%),不应在解析时替换,其值应在执行时访问。

所以,在这段代码中,%baseName%%extension% 与通常的语法一起使用,因为它的值在 for 中不会改变代码块,但 !n! 使用延迟扩展。它的值在 block 内改变,这个值必须在同一个 block 内访问。

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

关于windows - 如何在批处理文件中组合数字和字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23890940/

相关文章:

windows - 带 SSL 和主机名的 Ngrok

c++ - 将 std::string 拆分为 vector<string> 的正确方法

Java - 构造函数中的自动字符串实习

java - 如何绕过 java.nio.file.DirectoryNotEmptyException?

java - 如何使用 Scanner 读取文件并将其传递给 Java 中的方法

windows - 如何使用批处理文件查找Windows的安装位置

windows - vbs 脚本 - 帮助添加要在电子邮件正文中使用的标准输出

windows - 如何在窗口上设置 HICON(具有多种尺寸的 .ICO)?

c++ - 使用 Netbeans 启动并运行 Qt

c++ - 与返回硬编码字符串文字的函数一起存储的字符串在哪里?