2016-03-28 56 views
2

我有一个批处理文件,它从文本文件中读取和设置值。 但文本文件包含不同的变量制表符分隔符不工作批处理命令

批处理文件命令选项卡:

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

文本文件(input.txt中):

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

但变量没有被正确设置。

回答

3

两点的位置:

  • 默认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" 
) 
1

这个作品甚至,如果你的文本文件有几行(使用不同的/未知的令牌的数量):

@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" 

相关问题