我有一个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 ...