我仍然是批处理的新手,我正在遇到这个我似乎无法解决的问题。当我运行我的脚本时,它返回" 6766.txt"在这个时候出乎意料。我的脚本应该搜索" store_versions"在一个名为Local State的文件中。如果它找到该行,它将被附加到Temp文件,然后在循环中修剪该行,以便我只获得find命令输出的特定部分。该命令的输出是 [319]" store_versions":{。而我想要的只是319.有谁知道造成这个问题的原因是什么? 谢谢,
@echo off
setlocal enableextensions enabledelayedexpansion
set tempfile="%random%.txt"
set LineNumFin=%LineNumFin%
pause
Find /N "store_versions" < "Local State" > %tempfile%
for /f "tokens=1 delims=[]" %%a in %tempfile% do ( set LineNum=%%a
pause
)
del "%tempfile%"
echo Line Num: %LineNum%
set /a result=%LineNum%+4
echo %result%
答案 0 :(得分:1)
in
命令的for
子句需要括号
for /f "... options ..." %%a in ( file ) do ....
^ ^
^ here ^
并且,当您在文件名中包含引号时,您需要在usebackq
命令的options
部分中包含for
或者,您可以避免使用临时文件
for /f "tokens=1 delims=[]" %%a in (
' find /n "store_versions" ^< "Local State" '
) do set "lineNum=%%a"
for
命令将执行命令,对记录进行标记并检索值。