2012-02-07 16 views
1

SETコマンドのバッチファイルを使用して、link.2011*.logというログファイルのセットから現在findstrを実行していますが、ログファイルをエコーするのに問題があります。バッチを使用したバッチ

コード:

... 
set /P log=.\DIR\%DEV%\link.2011*.log 
findstr /L /C:"matrix" %log% 
if errorlevel 1 (
echo %DEV% --- matrix not found >> .\output.txt 
) else (
echo %DEV% --- matrix found %log% >> .\output.txt 
:END 

.\DIR\%DEV%\link.2011*.log

output.txt%dev%変数を印刷していたが%log%変数は文字列全体を出力Iが出力する文字列ではなく、実際のlink.2011xxxxxxxx.logをコードしたいと思います。

何か助けていただければ幸いです。

ありがとうございました。

+1

私は '/P log =。\ DIR \%DEV%\ link.2011 * .log'を実行する必要があります。私のシステムでは、 '。\ DIR \%DEV%\ link.2011 * .log'をコンソールに"プロンプト "として書き込み、ユーザーが何か応答した場合、変数'%log% '。それは何か異なることをするシステムがありますか? – ruakh

+0

@ruakh - 私の考えは、ディレクトリから各ログファイルを選ぶためにsetコマンドを使い、%log%変数を使って特定の文字列を見つけることでした。これがあなたの質問に答えるかどうか不明です。コマンドウィンドウからユーザーのやりとりを探しているのなら、stackoverflowのどこかで見たことがあるかもしれないと思います。 – redsu

答えて

0

あなたはFINDSTRコマンドで/Mスイッチを使用する場合は、出力が唯一試合が行わ撮影していたファイル(複数可)の名前(複数可)が表示されます:あなたは出力をしたい場合

FINDSTR /M /L /C:"matrix" "%log%" >> .\output.txt 

FINDSTR /M /L /C:"matrix" "%log%" > .\tmpoutput.txt && (
    ECHO %DEV% --- matrix found: >> .\output.txt 
) || (
    ECHO %DEV% --- matrix not found >> .\output.txt 
) 
TYPE .\tmpoutput.txt >> .\output.txt 
DEL .\tmpoutput.txt 

、文字列のFINDSTRコマンドを検索し、一時ファイルにファイルのリストを出力します。正確にあなたのスクリプトの例のようにするには、次のアプローチを試みることができます。検索が成功した場合、matrix foundメッセージは.\output.txtに、それ以外の場合はmatrix not foundが表示されます。

その後、.\tmpoutput.txtの内容がoutput.txtに追加されます。 (一致するものがなかった場合は、この手順について心配する必要はありません。その場合、一時ファイルは空になるので、output.txtの内容には影響しません)。

+0

ありがとうAndriy。とても有難い。 – redsu

+0

もう一度、スクリプトに関する別の質問があります。たとえば、私は、。\ TEMP \ *。logsの中に* .logsのリストを持っていますが、これはログごとに "行列"を見つけたいものです。しかし、見つかった場合はstring.txtを表示し、見つかったログの名前をoutput.txtに表示します。もう一度Andriyに感謝します。 – redsu

+0

@redshogun: '/ M'が指定されていないと、' FINDSTR'はファイル名と一致した行の両方を表示します。フォーマットは 'filename:line'です。コマンドを個別に試してみてください。 (ファイル名は 'FINDSTR'自体で示されているように強調表示されていますが、出力をリダイレクトした後で強調表示がキャンセルされます) –

関連する問題