【发布时间】:2011-09-23 07:35:18
【问题描述】:
我正在尝试解析一个文本文件,如果它是空的,它除了跳过一列之外,它正在工作。 这是文件格式:
206695844 66583369 L CAT 1 1 4144042 214857 64378180 L 4144039 214853 Y
206669467 127810625 R CAT 38 1 4136724 213413 724749204 R 4136727 213420 Y
206445106 65588013 L CAT 4 1 4139084 210381 64363708 L 4139082 210372 Y
^
empty column
如您所见,共有 14 列,每列由制表符分隔。
我的解析行是:
FOR /F "tokens=1,2,5,7,8,9" %%i in (datafile.txt) DO (
echo %%i %%j %%k %%l %%m %%n >> outputDatafile.txt
)
问题是它跳过了第 9 列(示例中为空白),而是使用第 10 列,如下所示:
206695844 66583369 1 4144042 214857 64378180
我想要第 9 列 - 即使是空的!
我也尝试使用显式制表符作为分隔符,因为 FOR 的帮助说:
delims=xxx
- 指定分隔符集。这将替换默认分隔符集的空格和制表符:
FOR /F "tokens=1,2,5,7,8,9* delims= " %%i in (datafile.txt) DO (
^tab
我做错了什么?
编辑
jeb 知道了 - 谢谢!
要将结果吐出到我的文件中,我只需使用:
echo (!col1!%tab%!col2!%tab%!col3!%tab%!col4!%tab%!col5!%tab%!col6!) >> outputFile.txt
【问题讨论】:
-
你真的在使用 MS-DOS 吗? FOR /F 仅在“批处理语言”的现代 Windows 实现中受支持
-
啊,好吧,可能是个好点。这是在 Win 7 上的 cmd shell 中运行的。这是一种新的风格,是吗?我应该删除标签吗?
-
我删除了标签并添加了 Windows-7 标签
标签: windows-7 batch-file csv