Разобрать текстовый файл с разделителями табуляцией

Мне нужно проанализировать текстовый файл с разделителями табуляции, выбрав определенные столбцы, например столбцы 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 останавливается на первой строке.

Не могли бы вы помочь мне в поиске проблемы?


person C G    schedule 10.01.2013    source источник
comment
Можете ли вы запустить свой скрипт из командной строки? Вы видите какие-либо сообщения об ошибках, когда вы это делаете?   -  person Andriy M    schedule 10.01.2013


Ответы (3)


Ваш код у меня работает нормально, но, может быть, попробовать эту укороченную версию?

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

Хотя я бы рекомендовал использовать укороченную версию Bali C, причина, по которой приведенный выше код может останавливаться после первой строки, заключается в том, что команда goto :eof или exit не находится в конце функции :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
person David Ruhmann    schedule 10.01.2013
comment
в яблочко! goto:eof отсутствует - person anishsane; 10.01.2013

ваш код работает нормально, проверьте вывод ниже.

Account.txt

"КОЛ5"

"012"

"123"

""

Entity.txt

"ЦВ1"

"123"

"234"

"так далее"

person muffy    schedule 10.01.2013