我是Windows批处理脚本的新手。 尝试从文本文件Ignore.txt文件中获取值,并将它们存储为本地变量。
命令文件:
@Echo off
setlocal enabledelayedexpansion
for /F "tokens=1,2,3" %%i in (Ignore.txt) do (
echo. %%i
echo. %%j
echo. %%k
set value1=%%i
set value2=%%j
set value3=%%k
)
Echo. Value1: !value1!
Echo. Value2: !value2!
Echo. Value3: !value3!
Endlocal
Ignore.txt:
*.svc
*.jpg
*.png
但结果只打印了一个错误的变量:
输出:
*.svc
*.jpg
*.png
Value1: *.png
Value2:
Value3:
如果我在这里做错了什么,请帮助我。还有关于其他更好的方法来检索此信息的任何建议。
答案 0 :(得分:1)
for
token
选项的帮助包含以下内容:
tokens=x,y,m-n - specifies which tokens from each line are to
be passed to the for body for each iteration.
换句话说,它只会将一行拆分为多个变量。这可以通过运行脚本来证明:它输出每一行,但它在每个空行%% j和%% k之间输出空行。
如果您要将此文件解析为单独的变量,则需要手动跟踪您所在的行,如下所示:
@Echo off
setlocal enabledelayedexpansion
set _digit=1
for /F %%i in (Ignore.txt) do (
echo. %%i
set value!_digit!=%%i
set /a _digit=!_digit!+1
)
Echo. Value1: !value1!
Echo. Value2: !value2!
Echo. Value3: !value3!
Endlocal