将递增计数器连接到批处理文件中的字符串变量
concatenating incrementing counter to string variable in batch file
我有一个脚本可以使用 random_tests_0、random_tests_1 格式创建一些文件
但是我的变量在添加到文件名字符串时不起作用。
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set /A num=0
for %%a in (.\gpc_cfgs\*) do (
ECHO !num!
set filename = random_tests_!num!
ECHO !filename!
set /A num+=1
)
OUTPUT:
0
random_tests_0
1
random_tests_0
EXPECTED OUTPUT:
0
random_tests_0
1
random_tests_1
设置变量 space 时,=
的任一侧都包含在名称和变量中。 您应该可以通过使用 !filename !
来解决这个问题,尽管该值仍然会以可能不需要的 space 开头!.
推荐的语法是Set "VariableName=VariableValue"
,因此:
@Echo Off
SetLocal EnableDelayedExpansion
Set "num=0"
For %%A In ("gpc_cfgs\*") Do (
Echo !num!
Set "filename=random_tests_!num!"
Echo !filename!
Set /A num+=1
)
这应该输出与 gpc_cfgs
.
中的文件相同数量的 !filenames!
我有一个脚本可以使用 random_tests_0、random_tests_1 格式创建一些文件 但是我的变量在添加到文件名字符串时不起作用。
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set /A num=0
for %%a in (.\gpc_cfgs\*) do (
ECHO !num!
set filename = random_tests_!num!
ECHO !filename!
set /A num+=1
)
OUTPUT:
0
random_tests_0
1
random_tests_0
EXPECTED OUTPUT:
0
random_tests_0
1
random_tests_1
设置变量 space 时,=
的任一侧都包含在名称和变量中。 您应该可以通过使用 !filename !
来解决这个问题,尽管该值仍然会以可能不需要的 space 开头!.
推荐的语法是Set "VariableName=VariableValue"
,因此:
@Echo Off
SetLocal EnableDelayedExpansion
Set "num=0"
For %%A In ("gpc_cfgs\*") Do (
Echo !num!
Set "filename=random_tests_!num!"
Echo !filename!
Set /A num+=1
)
这应该输出与 gpc_cfgs
.
!filenames!