Windows 制表符分隔符上循环拆分的批处理
我正在尝试编写一个批处理脚本,该脚本使用for循环从输入文件中读入行。我想拆分在制表符分隔符上读入的每一行。输入文件的格式如下所示,在sourcefile和version之间有一个选项卡。版本后还有一个结束行字符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 (
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键生成选项卡(而不是完成文件名的默认行为)。批处理文件通常是使用编辑器创建的,而编辑器具有这种行为,因此您的答案是错误的。