Windows MessageQueue触发器和规则:Batch-File在第一次调用时不起作用

时间:2017-03-22 14:00:23

标签: windows batch-file triggers msmq

我今天意识到这是一个非常奇怪的问题。我正在编写一个批处理文件,该文件使用trigadm.exe在特定的Windows消息队列上生成规则和触发器。

现在创建触发器和规则不是问题,因为我已经多次测试它并且它可以工作。 我想要的是,首先检查规则和触发器是否已经存在。如果它们不存在,那么我将创建它们。当它们已经存在时,我不会做任何事情并退出批处理脚本。

当我通过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
    )
)

1 个答案:

答案 0 :(得分:0)

如果您不希望使用延迟扩展,则可以重新构建脚本。

system('convert output_test.mp4 output_test.gif')