在批处理文件中连接字符串和数字
Concatenate string and number in batch file
如何在for循环中连接数字和字符串?
我试过这样但它不起作用:
SET PATH=C:\file
FOR /L %%x IN (1,1,5) DO (
SET "NUM=0%%x"
SET VAR=%PATH%%NUM%
ECHO %VAR%
)
像这样修改您的代码:
@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
和 !...!
而不是 %...%
。
您需要 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
.
之外
如何在for循环中连接数字和字符串? 我试过这样但它不起作用:
SET PATH=C:\file
FOR /L %%x IN (1,1,5) DO (
SET "NUM=0%%x"
SET VAR=%PATH%%NUM%
ECHO %VAR%
)
像这样修改您的代码:
@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
和 !...!
而不是 %...%
。
您需要 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
.