我有一个批处理文件,它从文本文件中读取和设置值。 但文本文件包含不同的变量制表符分隔符不工作批处理命令
批处理文件命令选项卡:
for /f "tokens=* delims=<TAB>" %%x in (input.txt) do set %%x
文本文件(input.txt中):
a=one b=two c=three d=four
但变量没有被正确设置。
我有一个批处理文件,它从文本文件中读取和设置值。 但文本文件包含不同的变量制表符分隔符不工作批处理命令
批处理文件命令选项卡:
for /f "tokens=* delims=<TAB>" %%x in (input.txt) do set %%x
文本文件(input.txt中):
a=one b=two c=three d=four
但变量没有被正确设置。
两点的位置:
的默认delims=
值包括空间和Tab作为分隔符,所以你不必包括delims=
选项,除非你想忽略的空间作为分隔符!
你tokens=*
选项定义您的for
命令(%%x
在这种情况下)包含所有令牌该行一个令牌信。如果你想获得4个标记,需要相应指定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
)
的伎俩是:通过放入引号内的字符串,分隔符字符不处理作为分隔符。因此增加在开始和结束的字符串报价和更换每TAB
与“报价逗号引号”改变字符串:它可以愉快地与for %%x ...
"a=one","b=two","c=three","d=four"