制表符分隔符不工作批处理命令

时间:2016-03-28 14:26:04

标签: windows batch-file

我有一个批处理文件,可以从文本文件中读取和设置值。 但是文本文件包含不同变量的选项卡

批处理文件命令:

TileProvider tileProvider = new BackgroundTileProvider();
TileOverlay tileOverlay = map.addTileOverlay(
    new TileOverlayOptions().tileProvider(tileProvider));

文本文件(input.txt):

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

但是变量没有正确设置。

2 个答案:

答案 0 :(得分:3)

这里有两点:

  • 默认 delims=值包含空格和Tab作为分隔符,因此您不必包含delims=选项,除非您想< em>忽略空格作为分隔符!

  • 您的tokens=*选项在for命令(本例中为%%x)中定义一个令牌字母,其中包含所有令牌< / em>在行中。如果您想获得四个令牌,您需要指定tokens=1-4,请使用另一个令牌启动令牌字母,并相应地处理每个令牌:

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

答案 1 :(得分:1)

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

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

诀窍是:通过在引号中包含字符串,分隔符字符不再被视为分隔符。因此,在字符串的开头和结尾添加引号并将每个TAB替换为&#34;引用逗号引号&#34;将字符串更改为:

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

可以使用for %%x ...

进行处理