Variables 获取循环内部使用的变量值,用于循环外部
我需要将“for”循环中的某些行(Myfile)的一部分放入两个单独的变量或数组中。我的目标是相互使用以构成以下行result*.txt的路径。我在下面写下了您要写的内容,但是可以看到我的'a'变量只回显'C:\Temp\FR'(Myfile中的行尾匹配标记) 请问,有没有办法在变量/数组中获取所有匹配的令牌?例如,在我的例子中,我需要将'C:\Temp\USA'和'C:\Temp\FR'从循环中取出,以便?谢谢Variables 获取循环内部使用的变量值,用于循环外部,variables,loops,batch-file,Variables,Loops,Batch File,我需要将“for”循环中的某些行(Myfile)的一部分放入两个单独的变量或数组中。我的目标是相互使用以构成以下行result*.txt的路径。我在下面写下了您要写的内容,但是可以看到我的'a'变量只回显'C:\Temp\FR'(Myfile中的行尾匹配标记) 请问,有没有办法在变量/数组中获取所有匹配的令牌?例如,在我的例子中,我需要将'C:\Temp\USA'和'C:\Temp\FR'从循环中取出,以便?谢谢 for /f "tokens=2 delims==" %%x in (Myf
for /f "tokens=2 delims==" %%x in (Myfile) do (
set a=%%x
)
echo %a%
'MyFile
DIR1= C:\Temp\USA
DIR2= C:\Temp\FR
result1.txt
result2.txt
试试这个:
@echo off&setlocal
for /f "tokens=1* delims== " %%x in (Myfile) do (
if /i "%%x"=="dir1" set "path1=%%y"
if /i "%%x"=="dir2" set "path2=%%y"
)
echo %path1%
echo %path2%
输出为:
C:\Temp\USA
C:\Temp\FR
有几种方法可以做到这一点。如果要从文件开头读取几行,最简单的方法是直接在几个变量中读取它们:
< Myfile (
set /P var1=
set /P var2=
)
但是,在您的特定情况下,所需的行具有变量赋值的形式。这意味着,如果使用SET命令执行这些行,这些行中的值将“自动”保存:
在前面的FOR之后,您可以直接获得DIR1
或DIR2
变量的值,例如:
echo %DIR1%
echo %DIR2%
这种方法非常简单,不需要对加载的单个变量进行任何测试
如果要删除值中等号后的空格,可以调整选项以执行此操作:
for /F "tokens=1* delims== " %%a in ('findstr "=" Myfile) do set %%a=%%b
echo %DIR1%
echo %DIR2%
for /F "tokens=1* delims== " %%a in ('findstr "=" Myfile) do set %%a=%%b