Windows批处理文件可以';不要在语法中使用变量

Windows批处理文件可以';不要在语法中使用变量,windows,batch-file,for-loop,Windows,Batch File,For Loop,我想在for循环中使用变量skip参数,但它不允许我这样做。 这是我的密码 @echo off setlocal ENABLEDELAYEDEXPANSION set /p testcase=<testcases.txt set /a end=%testcase%*13 for /L %%P IN (1,13,%end%) DO ( set skip=skip=%%P echo !skip! set vidx=0 for /f "%skip%" %%

我想在for循环中使用变量skip参数,但它不允许我这样做。 这是我的密码

@echo off
setlocal ENABLEDELAYEDEXPANSION

set /p testcase=<testcases.txt
set /a end=%testcase%*13

for /L %%P IN (1,13,%end%) DO (

    set skip=skip=%%P
    echo !skip!
    set vidx=0

    for /f "%skip%" %%A in (testcases.txt) do (
        set /a vidx=!vidx! + 1
        set var!vidx!=%%A
    )
)
@echo关闭
setlocal ENABLEDELAYEDEXPANSION

set/p testcase=我认为使用此逻辑,唯一的选项是一个子例程:

@echo off
setlocal ENABLEDELAYEDEXPANSION

set /p testcase=<testcases.txt
set /a end=%testcase%*13

for /L %%P IN (1,13,%end%) DO (

    set skip=skip=%%P
    echo !skip!
    set vidx=0
    call :innerFor %%P

)

exit /b 0

:innerFor
    for /f "skip=%~1" %%A in (testcases.txt) do (
        set /a vidx=!vidx! + 1
        set var!vidx!=%%A
    )
 exit /b 0
@echo关闭
setlocal ENABLEDELAYEDEXPANSION

set/p testcase=这是一个输入错误:应该是
“!skip!”
而不是
“%skip%”
?也尝试过使用它,它说“!skip!”此时是意外的。“这个文件很简单。第一行包含一个整数T,即测试用例的数量。T测试用例如下。每个测试用例有13行,每行包含一个整数。@DarkNemesis-这是因为
FOR/F
如何解析其选项。1)参数/标记总是(
%%A
)即使在延迟扩展变量之后,也始终进行扩展。2)当批处理文件中的
遇到
%%
时,它会将其作为优先级高于选项的参数/令牌定义,从而中断命令。看起来命令行参数是在FOR标记之前展开的,因此它与子例程一起工作。