Windows批处理文件可以';不要在语法中使用变量
我想在for循环中使用变量skip参数,但它不允许我这样做。 这是我的密码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%" %%
@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标记之前展开的,因此它与子例程一起工作。