Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables 获取循环内部使用的变量值,用于循环外部_Variables_Loops_Batch File - Fatal编程技术网

Variables 获取循环内部使用的变量值,用于循环外部

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”循环中的某些行(Myfile)的一部分放入两个单独的变量或数组中。我的目标是相互使用以构成以下行result*.txt的路径。我在下面写下了您要写的内容,但是可以看到我的'a'变量只回显'C:\Temp\FR'(Myfile中的行尾匹配标记)

请问,有没有办法在变量/数组中获取所有匹配的令牌?例如,在我的例子中,我需要将'C:\Temp\USA'和'C:\Temp\FR'从循环中取出,以便?谢谢

   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