2016-09-12 13 views
0

固定幅のテキストファイルを.csv形式に変換するバッチスクリプトを作成しています。Windowsバッチスクリプト*(星)をテキストとして読み取りますか?

@echo off 
setlocal enabledelayedexpansion 


    for /F "tokens=*" %%A in (HRV*.txt) do (
    set var=%%A 
    set mer=!var:~6,11! 
    set cr=!var:~18,19! 

    set dt=!var:~42,30! 
    set aa=!var:~72,30! 
    set ab=!var:~102,30! 
    set ac=!var:~132,15! 

    set ad=!var:~147,30! 
    set ae=!var:~177,30! 

    set af=!var:~283,36! 

    set ag=!var:~318,3! 
    set ah=!var:~329,7! 
    set ai=!var:~337,17! 
    set aj=!var:~442,2! 
    set ak=!var:~460,15! 
    set al=!var:~475,2! 
    set am=!var:~482,15! 

    set y=!mer!.!cr!,"!dt!","!aa!","!ab!","!ac!","!ad!","!ae!",="!af!","!ag!",="ah","ai","aj",="ak","al",="am" 
    echo !y!>> converted.csv 
    ) 

pause 

問題は、私はそれを実行すると、プログラムが完了しなかったということで、出力「システムは、ファイルHRVの* .txtは見つけることができません」:ここでは、私がこれまでに書いたものです。私はその後、

for /F "tokens=*" %%A in (*.txt) do (... 

にループに変更しかし、エラーはちょうどスター*テキストとして読み込まれているようだ

「システムは、ファイル* .txtは見つけることができない」に変更しますか?これは "トークン+ *"と関係がありますか? HRVで始まるファイルでスクリプトを実行できるようにするにはどうすればよいですか?

答えて

4

for /fは、1つのファイル名が必要であり、ワイルドカードを使用できません。周りの別の平野forを使用します。

for %%X in (HRV*.txt) do (
    for /F "tokens=*" %%A in (%%X) do (
    ... etc. etc. 
) 
) 

によって:リダイレクトのあなたの方法は非常に遅いです。宛先ファイルが開かれ、1行が書き込まれ、ファイルが再び閉じられます。ファイルの開閉は非常に時間がかかります。 1回だけ開閉することで回避できます。代わりに:

約27秒を必要と
for /l %%a in (1,1,10000) do (
    echo something>>file.txt 
) 

は、実行します。約170 ミリを必要と

(
    for /l %%a in (1,1,10000) do (
    echo something 
) 
)>file.txt 

を。 (Ymmv - 時間はあなたのコンピュータシステムによって異なります)

+0

あなたは私よりも速かったようです... ;-) +1 – aschipfl

関連する問題