在批处理文件中连接字符串和数字

时间:2015-09-16 09:33:12

标签: string batch-file for-loop concatenation

如何在for循环中连接数字和字符串? 我尝试过这样但是它不起作用:

SET PATH=C:\file
FOR /L %%x IN (1,1,5) DO (
    SET "NUM=0%%x"
    SET VAR=%PATH%%NUM%
    ECHO %VAR%
)

2 个答案:

答案 0 :(得分:6)

像这样修改你的代码:

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET PATH=C:\file
FOR /L %%x IN (1,1,5) DO (
    SET "NUM=0%%x"
    SET VAR=%PATH%!NUM!
    ECHO !VAR!
)

在处理循环内修改的变量时,您始终必须使用SETLOCAL ENABLEDELAYEDEXPANSION!...!而不是%...%

答案 1 :(得分:2)

您需要delayed expansion才能实现这一目标:

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET FILEPATH=C:\file
FOR /L %%x IN (1,1,5) DO (
    SET "VAR=%FILEPATH%0%%x"
    ECHO !VAR!
)
ENDLOCAL & SET VAR=%VAR%

您不需要临时变量NUM,您可以立即连接字符串部分。

您应该从不更改变量PATH,因为系统会使用它。因此我将其更改为FILEPATH

由于SETLOCAL创建了一个新的本地化环境块,因此在该块之外无法看到其中定义或更改的所有变量。但是,上面代码中的最后一行演示了如何将 last 连接值传递到ENDLOCAL以外。