今日は本当に奇妙な問題を認識しました。 trigadm.exeを使用して特定のWindows Message Queueでルールとトリガーを生成するバッチファイルを作成しています。Windows MessageQueueトリガーとルール:バッチファイルは最初の呼び出しでは機能しません
トリガーとルールの作成は問題ではありません。なぜなら、私はそれを数回テストして動作しているからです。 私がしたいのは、ルールとトリガーが既に存在するかどうかを最初に確認することです。彼らが存在しないなら、私はそれらを作成します。それらがすでに存在するときは、何もせずにバッチスクリプトを終了します。
trigadm.exeを使用してルールとトリガーを生成すると、常にルール用のGUIDとトリガー用のGUIDが取得されます。後で確認するために、これらのルールをテキストファイルに保存します。だから私は彼らが存在するかどうかを確認するとき、私はちょうどテキストファイルからこれらのGUIDを読んで、特定のGUIDを持つルールやトリガが存在する場合、trigadm.exeのメソッドを使用します。ルールまたはトリガーが存在する場合、次のようなメッセージが出力されます。IDのルールの詳細:b5ea975a-efd6-444a-9ae5-2a366e723980 ....ルールまたはトリガーが存在しない場合は、失敗:このルールは存在しません。だから私はこのメッセージをファイルに保存し、contetに「Details」という単語が含まれているかどうかを確認します。その単語が含まれている場合は、ルールやトリガーを作成しません。
したがって、主な問題は次のとおりです。 Windowsコマンドプロンプトからバッチファイルを呼び出そうとすると、最初の呼び出しでは機能しません。バッチファイルを約4回呼び出す必要があります。
誰でも問題が何であるか考えている人はいますか?
@ECHO OFF
IF EXIST C:\temp\WarehouseOrder\Installation\ruleId.txt (
SET /p rId=<C:\temp\WarehouseOrder\Installation\ruleId.txt
trigadm /request:GetRule /ID:%rId% > C:\temp\WarehouseOrder\Installation\msg.txt
SET /p msg=<C:\temp\WarehouseOrder\Installation\msg.txt
SET result=%msg:~0,7%
IF "%result%" == "Details" (
ECHO rule already exists > result.txt
)
)
[遅延拡張](http://ss64.com/nt/delayedexpansion.html)をご覧ください。括弧で囲まれたコードブロック内の同じ変数を*と*設定しています... – aschipfl
@aschipfl Thx、なぜこれが機能しないのか理解しています – Leon