3

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?

2 Answers 2

7

The syntax you're looking for is:

IF "%2"=="SOMETHING" (

When %2 is empty, the line you have becomes:

IF ==SOMETHING (

That's invalid syntax. Putting the quotes in it makes it:

IF ""=="SOMETHING" (

That's valid.

1
  • Remember! exit 0xFF means "syntax error in batch file"!
    – BobHy
    Jan 27, 2016 at 15:27
0

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.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .