我有一个运行批处理文件的计划任务,尽管我可以看到它成功完成的结果,但根据任务计划程序,它失败并出现错误0xff, 每次。
我已经安排了其他批处理文件也成功完成并返回0x0应该如此。我能看到这些文件之间的唯一区别是工作文件以以下内容结尾:
IF ERRORLEVEL 1 (
("notify me" script here)
)
而损坏的版本结尾为:
IF %2==something (
(run a program here)
IF ERRORLEVEL 1 (
(same "notify me" script here)
)
)
IF 块是否返回0xff如果是假的或者其他什么的?怎么回事?
答案1
您正在寻找的语法是:
IF "%2"=="SOMETHING" (
当 %2 为空时,该行将变为:
IF ==SOMETHING (
这是无效的语法。加上引号后,结果如下:
IF ""=="SOMETHING" (
这是有效的。
答案2
经过一些测试,我发现 IF 块是没问题的,它们似乎不会改变错误级别,但搞砸了的是“%2==something”——失败的时候,没有第二个参数传递给批处理文件。所以我不知道如何“安全地”测试参数是否存在(即,当参数不存在时不会出错 0xff),除非在那之后再出现另一个 IF ERRORLEVEL。但无论如何,我刚刚更改了计划任务,因此它将始终具有第二个参数(无论它是否是“something”),并且它似乎返回了 0x0,就像现在应该的那样。