2016-04-11 9 views
1

バッチスクリプトではかなり新しく、現在はスクリプトで私の仕事を楽にしようとしています。バッチファイルがテキストファイル内の特定の入力を検索する方法はありますか?echoをテキストファイルに検索する方法はありますか?バッチでテキストファイルを検索して編集する

たとえば、テキストファイルは次のようになります。

4/11/2016 
01530594 
Time In: 1:30 
01565832 
Time In: 2:32 

与えられた文字列は、この例では、ある01530594と私は、テキストファイル内でそれを検索する必要がある、と作るために時間を記録します他のものは、それを容易にするために必要とされる場合

4/11/2016 
01530594 
Time In: 1:30 
Time Out: 3:21 
01565832 
Time In: 

(たとえば、すでに時間なしで、最初からTime Out:を持っている)ことが許容以上だが、必要です。それは次のようになります。

バッチファイルで検索/置換/編集することは分かりますが、これは可能ですか?

+0

申し訳ありませんが、バッチでファイルを編集することはできません。行ごとに( '/ for?)を読み、新しいファイルに書き込む必要があります。後で名前を変更してください) – Stephan

答えて

1
set "timevalue=3:21" 
(
    for /f "delims=" %%i in (infile.txt) do (
    echo %%i 
    echo %%i|find "Time In:" >nul && echo Time Out: %timevalue% 
) 
)>outfile.txt 

forループはファイルを1行ずつ読み込みます。最初のechoは、出力ファイルに行を書き込みます。

echoライン

は、もう少し複雑です:

echo %%i|find "Time In:"ルックス、行が文字列が含まれている場合「の時間を:」。 >nulは、その出力をnirvanaに書き込みます(これは必要ありません。それが存在するかどうかを知りたいだけです)。

&&は、前のコマンドが成功した場合「(すなわちfindた)、次のコマンドを実行する。もしそうであれば、追加のラインを書き込むTime Out: %timevalue%

()の間のブロックに全体forループを入れてファイルに出力をリダイレクトします

+0

こんにちはStephan、これで私を助けてくれてありがとう。あなたがここで私のもので動作させるためにここに与えた帽子、それはうまく動作しますが、私はいくつか質問があります。前のファイルを削除してコピーファイルの名前を変更するにはどうすればよいですか?私はこれがループを台無しにしていると信じています。それが助けになる場合、これは私が今まで持っているコードです: – ricknaght

+0

編集:nevermind、それはラインの終わりのために乱雑ですが、私はあなたが考えを得ると思います。 – ricknaght

+0

'del infile.txt'と' ren outfile.txt infile.txt' – Stephan

関連する問題