I have a scheduled task that runs a batch file, and even though I can see the results of it completing successfully, according to the task scheduler it fails with error 0xff, every time.
I have other batch files scheduled that also complete successfully and return 0x0 as they should. The only difference I can see between these files is that the working ones end with:
IF ERRORLEVEL 1 (
("notify me" script here)
)
whereas the broken one ends with:
IF %2==something (
(run a program here)
IF ERRORLEVEL 1 (
(same "notify me" script here)
)
)
Does an IF block return 0xff if false or something? What's the deal?
The syntax you're looking for is:
When %2 is empty, the line you have becomes:
That's invalid syntax. Putting the quotes in it makes it:
That's valid.
After some testing, I figured out that IF blocks are okay, they don't seem to change the error level, but what was messing it up was the "%2==something"--the times that were failing, there was no second parameter being passed to the batch file. So I'm not sure how to "safely" test for whether a parameter exists (i.e., without it erroring out 0xff when it's not there) except maybe to have yet another IF ERRORLEVEL after that. But anyway, I just changed the scheduled task so it will always have a second parameter (whether it's "something" or not) and it seems to return 0x0 as it should now.