1

我需要通过抓取特定列(如第 1 列和第 5 列)来解析一个制表符分隔的文本文件,并将这些列中的每一个输出到一个文本文件中。请查找数据文件的示例和代码:

数据文件:

COL1 COL2 COL3 COL4 COL5 COL6
123  345  678  890  012  234
234  456  787  901  123  345
etc

批处理文件:

@echo off & setlocal 
For /F "tokens=1,5*" %%i in (myFile.dat) do call :doSomething "%%i" "%%j"
goto :eof 

:doSomething 
Set VAR1=%1
Set VAR2=%2
@echo %VAR1%>>Entity.txt
@echo %VAR2%>>Account.txt

这可行,但是,For循环在第一行停止。

你能帮我找出问题吗?

4

3 回答 3

3

你的代码对我来说很好,但也许试试这个缩短的版本?

@echo off
for /F "tokens=1,5*" %%i in (myFile.dat) do (
echo %%i >>Entity.txt
echo %%j >>Account.txt
)
于 2013-01-10T10:14:12.000 回答
1

虽然我建议使用 Bali C 的缩短版本,但上面的代码可能在第一行之后停止的原因是goto :eoforexit命令不在函数的末尾:doSomething

@echo off & setlocal 
For /F "tokens=1,5*" %%i in (myFile.dat) do call :doSomething "%%i" "%%j"
goto :eof 

:doSomething 
Set VAR1=%1
Set VAR2=%2
@echo %VAR1%>>Entity.txt
@echo %VAR2%>>Account.txt
goto :eof

或者如果扩展被禁用,它将输出以下错误消息:

/F was unexpected at this time.

要解决此问题,请添加EnableExtensions到您的setlocal命令中。

@echo off & setlocal EnableExtensions
于 2013-01-10T15:36:07.883 回答
0

您的代码工作正常,请检查下面的输出。

帐号.txt

“COL5”

“012”

“123”

“”

实体.txt

“COL1”

“123”

“234”

“ETC”

于 2013-01-10T04:14:26.753 回答