有几种方法可以做到这一点。如果您想从文件的开头读取几行,最简单的方法是直接在几个变量中读取它们:
< Myfile (
set /P var1=
set /P var2=
)
请注意,这些变量包含完整的行,因此有必要提取等号后面的部分。
在您的示例中,您只需要带有等号的行,因此我们可以findstr "=" Myfile
在 FOR 命令中使用来处理它们。如果未定义行数,则必须按照建议将所有所需行保存在数组中:
setlocal EnableDelayedExpansion
set n=0
for /F "tokens=2 delims==" %%a in ('findstr "=" Myfile') do (
set /A n+=1
set var[!n!]=%%a
)
rem Show all array elements
for /L %%i in (1,1,%n%) do (
echo !var[%%i]!
)
rem Show just the second element
echo %var[2]%
但是,在您的特定情况下,您想要的行具有variable assignments的形式。这意味着如果您使用 SET 命令执行此类行,则这些行中的值将“自动”保存:
for /F "delims=" %%a in ('findstr "=" Myfile') do set %%a
在前面的 FOR 之后,您可以直接获取DIR1
或DIR2
变量的值,例如:
echo %DIR1%
echo %DIR2%
此方法非常简单,不需要对正在加载的各个变量进行任何测试。
如果要删除值中等号后的空格,可以调整 FOR 选项来执行此操作:
for /F "tokens=1* delims== " %%a in ('findstr "=" Myfile) do set %%a=%%b