1

CMDバッチトリガースクリプトでは、cleartoolコマンドを使用してアクティビティ情報をファイルに書き込みます。

cleartool lsactivity -long  %CLEARCASE_ACTIVITY%>>C:\folder\activityinfo.txt

これはほぼ毎回機能しますが、私にはわからない理由で、cleartoolコマンドが情報をファイルに正しく書き込まず、削除できない0KBの出力ファイルが生成されることがあります。さらに、それはトリガーが連続した試行で適切に実行されるのをブロックします。

出力ファイルのサイズが0KBかどうかを確認するコードをいくつか作成しましたが、cleartoolコマンドはファイルに書き込んでいないのにファイルを開いたままにしているように見えるため、機能しません。それはとても奇妙です!

ロックされたプロセスのロックが解除されたと想定しているため、数時間後にトリガーが再び機能します。

この現象を回避する方法はありますか?

よろしく、

アンドリュー

4

1 に答える 1

1

私が行ったことは、の出現ごとに異なるファイルに書き込みcleartool lsactivity、完全なプロセスが完了したら、それらのファイルを1つに集約することです。

たとえば、1つの手法は、「ファイル名のバッチコマンドの日付と時刻」のように、ファイル名に日付を使用することです。

set hr=%time:~0,2%
if "%hr:~0,1%" equ " " set hr=0%hr:~1,1%
cleartool lsactivity -long  %CLEARCASE_ACTIVITY% > C:\folder\activityinfo_%date:~-4,4%%date:~-10,2%%date:~-7,2%_%hr%%time:~3,2%%time:~6,2%.txt

ファイル' 'は、cleartoolを呼び出すたびに常に異なるため、 >''ではなく''のみを使用することに注意してください。>>activityinfo_YYYYMMDD_HH:MM:SS

OPアンドリューコメント

' '(追加)の代わりに''でcleartool lsactivityファイルに書き込む(または上書きする)ようにコマンドを設定しました。>>>

また、システムに問題が発生することがあるため、ファイルへの書き込みと作成に遅延が発生した場合に備えて、コマンドの後に5秒のスリープを設定しました。

ただし、以下のコメントから、スクリプトの先頭にスリープを追加することもお勧めします。

スクリプトの最初に20秒の初期スリープを追加しましたが、まだ問題はありません。

于 2013-02-21T09:56:47.157 に答える