0

logparser を使用してバッチ ファイルを実行しようとすると、予期しないエラーが発生します。

コロンはバッチ ファイルのラベルとして使用され、ダブル コロンはコメントに使用されることを知っています。しかし、コロン : が次のようにスイッチに表示されるとどうなりますか:

for /f "tokens=1,2 delims=," %a in (servers.txt) do "C:\Program Files\Log Parser 2.2"\logparser -i:EVT "SELECT TimeGenerated,EventID,EventType,SourceName,ComputerName,Message FROM \\%a\%b WHERE TimeGenerated > TO_TIMESTAMP(SUB(TO_INT(SYSTEM_TIMESTAMP()),118800))AND EventID BETWEEN x AND y ORDER BY TimeGenerated DESC" -stats:OFF 

logparser コマンドを直接実行すると、正常に動作します。しかし、バッチファイルで実行すると、次のようになります。

「現時点では、EVTは予想外でした。」「-i:EVT」がバッチ ファイルの外部で使用されるように cmd に解釈させるにはどうすればよいですか?

どうやって逃げるの?

-i^:EVT と -i^^:EVT を試しましたが、どちらも機能しません。

4

1 に答える 1

0

スクリプトから実行しようとするときは、For変数文字を複製する必要があります。これを試してください。%

for /f "tokens=1,2 delims=," %%a in (servers.txt) do "C:\Program Files\Log Parser 2.2"\logparser -i:EVT "SELECT TimeGenerated,EventID,EventType,SourceName,ComputerName,Message FROM \\%%a\%%b WHERE TimeGenerated > TO_TIMESTAMP(SUB(TO_INT(SYSTEM_TIMESTAMP()),118800))AND EventID BETWEEN x AND y ORDER BY TimeGenerated DESC" -stats:OFF

元のコードが CMD から実行されて正常に動作する場合、変更はスクリプトから実行されますが、とにかく、この部分で"C:\Program Files\Log Parser 2.2"\logparser間違ったディレクトリ パスを囲んでいることをお勧めします。また、インタープリター エラーを回避するために、コマンドをグループ化することを検討してください。次のDOようなキーワードの後:Do (This)

于 2013-10-18T20:28:45.520 に答える