选项卡分隔符不起作用批处理命令

我有一个batch file,从文本文件中读取和设置值。 但文本文件包含不同variables的选项卡

batch file命令:

for /f "tokens=* delims=<TAB>" %%x in (input.txt) do set %%x 

文本文件(input.txt):

 a=one b=two c=three d=four 

但variables没有正确设置。

这里有两点:

  • 默认的 delims= value包含空格和Tab作为分隔符,所以你不必包含delims=选项,除非你想忽略空格作为分隔符!

  • 你的tokens=*选项在你的for命令中定义了一个令牌字母 (在这种情况下是%%x ),它包含了行中的所有记号 。 如果你想得到四个令牌,你需要指定tokens=1-4 ,与另一个令牌字母开始,并相应地处理每个令牌:

 for /f "tokens=1-4" %%a in (input.txt) do ( set "%%a" & set "%%b" & set "%%c" & set "%%d" ) 

这甚至可以,如果你的文本文件有几行(具有不同/未知数量的标记):

 @echo off setlocal enabledelayedexpansion for /f "tokens=*" %%i in (input.txt) do ( set line=%%i for %%x in ("!line: =","!") do set %%x ) 

诀窍是:通过用引号括起一个字符串,定界符字符不再被视为分隔符。 因此,在字符串的开始和结尾添加一个引号,并用“quote逗号引用”替换每个TAB ,将字符串更改为:

 "a=one","b=two","c=three","d=four" 

它可以愉快地处理for %%x ...