将递增计数器连接到批处理文件中的字符串变量

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!