如何在Windows批处理文件中使用FOR获取文本文件中的路径变量?

时间:2018-08-14 09:25:58

标签: string windows batch-file

我尝试在由标签标识的文本文件中检索路径。

我的文本文件中有这样一行:

"mypath":"C:\myfolder"

我需要检索与mypath标签相对应的路径。

我尝试过:

for /f tokens^=2^,3^ delims^=^"^:^" %%a in ('type %mytextfile%^|find """mypath"""') do (  
    echo %%a 
    echo %%b
)

但是它不起作用,结果是:

mypath
C

所以我的问题可能来自定界符和我要获取的字符串中使用的冒号。

1 个答案:

答案 0 :(得分:2)

两点:首先,仅对for选项使用引号,而不要转义所有内容。其次,您可以在令牌选项之后添加*,以暗示不再进行令牌化,其余的应作为单个令牌返回:

for /f "tokens=1* delims=:" %%A in ('findstr /b /c:"""mypath""" %mytextfile%') do (
  echo %%~A
  echo %%~B
)

还有几件事:

  • 当您传递的命令可以读取文件时,不需要type。 :-)
  • findstr /b与该行开头的搜索字符串匹配,这是对您是否确实找到正确行的补充检查。
  • 用于打印变量的~仅消除了文本周围的引号,因此您不必再处理它们了。