我有一个用 FOR 循环读取的文本文件。对于每一行,我想提取一个从 INDEX 参数开始的子字符串。我的代码如下:
@ECHO off
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /f "delims=" %%a IN (cases.txt) DO (
SET INDEX=3
SET LINE=%%a
ECHO !LINE:~!INDEX!!
)
GOTO :EOF
ECHO 只是在每一行的末尾附加了“INDEX”这个词。是否有可能完成我想做的事情?
问候,
安德鲁
最佳答案
@ECHO off
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /f "delims=" %%a IN (cases.txt) DO (
SET INDEX=3
SET LINE=%%a
for %%# in (!INDEX!) do echo !LINE:~%%#!
)
GOTO :EOF
正如您问的更广泛 question here ,您可以通过更多技术和解释获得更广泛的答案:-)
您的代码发生了什么变化?
解析器检查 !! 和 !line:~! 变量,因为它们不存在,唯一留给 echo 的是 INDEX。对于延迟扩展,您不能使用嵌套变量 - 您可以使用 call ,但这会损害你的表现
关于windows - 批处理文件 : How can I extract the substring of a value from a FOR loop using an index variable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25565285/