2013-01-10 75 views
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循環停止在第一行。

你能幫我找到問題嗎?

+0

你能從命令提示符運行腳本嗎?你可以看到任何錯誤信息嗎? –

回答

0

你的代碼工作正常,請檢查下面的輸出。

Account.txt

「COL5」

「012」

「123」

「」

Entity.txt

「COL1」

「123」

「234」

「等」

+0

這很好,謝謝! –

3

你的代碼工作對我很好,但也許嘗試簡化版本?

@echo off 
for /F "tokens=1,5*" %%i in (myFile.dat) do (
echo %%i >>Entity.txt 
echo %%j >>Account.txt 
) 
1

雖然我建議使用由巴利C中的縮短的版本,上述的代碼可能的第一行之後停止的原因是因爲所述goto :eofexit命令不是在: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. 

要解決此添加EnableExtensionssetlocal命令。

@echo off & setlocal EnableExtensions 
+0

到底! goto:eof缺失 – anishsane

相關問題