Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 制表符分隔符上循环拆分的批处理_Windows_For Loop_Batch File_Cmd - Fatal编程技术网

Windows 制表符分隔符上循环拆分的批处理

Windows 制表符分隔符上循环拆分的批处理,windows,for-loop,batch-file,cmd,Windows,For Loop,Batch File,Cmd,我正在尝试编写一个批处理脚本,该脚本使用for循环从输入文件中读入行。我想拆分在制表符分隔符上读入的每一行。输入文件的格式如下所示,在sourcefile和version之间有一个选项卡。版本后还有一个结束行字符 sourcefile1 version1 sourcefile2 version2 sourcefile3 version3 我正在运行以下批处理文件 @echo off for /F "tokens=1,2 delims=\T^" %%a in (

我正在尝试编写一个批处理脚本,该脚本使用for循环从输入文件中读入行。我想拆分在制表符分隔符上读入的每一行。输入文件的格式如下所示,在sourcefile和version之间有一个选项卡。版本后还有一个结束行字符

sourcefile1   version1
sourcefile2   version2
sourcefile3   version3
我正在运行以下批处理文件

@echo off
 for /F "tokens=1,2 delims=\T^" %%a in (input_file.txt) do ( 
   echo a = %%a 
   echo b = %%b 
)
我的输出如下:

a = sourcefile1 version1
b =
a = sourcefile2 version2
b =
a = sourcefile3 version3
b =
我期望的输出是:

a = sourcefile1
b = version1
a = sourcefile2
b = version2
a = sourcefile3
b = version3

关于我如何实现期望输出的任何意见?谢谢

您需要在使用
Cmd/F:off
关闭制表符完成功能的情况下启动Cmd,然后使用
“tokens=3 delims=^T”
,这里的
^T
将是制表符文字。

删除delims选项为我提供了所需的输出

@echo off
for /F "tokens=1-2" %%a in (input_file.txt) do (
   echo %%a
   echo %%b
)

delims=\T^
指定三个分隔符,序列
\T^
cmd
中没有任何特殊含义。只需删除
delims=
选项字符串,使其默认为空格和制表符;如果空格干扰,您必须严格指定制表符。注意:为了避免直接将制表符放入批处理文件中,我更喜欢使用
for/F“delims=“%%T in('forfiles/P“%~dp0.”/M“%~nx0”/C“cmd/C echo/0x09”)do set“_tab=%%T”
获取它,并进一步
%\u TAB%
使用它…关闭TAB completion仅允许您使用命令行上的TAB键生成选项卡(而不是完成文件名的默认行为)。批处理文件通常是使用编辑器创建的,而编辑器具有这种行为,因此您的答案是错误的。