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」

"等"

于 2013-01-10T04:14:26.753 に答える