I am running input arguments as a command in my dos batch file as I asked in:
Run an input parameter as command in dos batch script.
That works, however the problem I am having: checking if the input command if it’s empty.
What I do:
SETLOCAL
set CMD=%*
echo Running command [%CMD%]
IF "%CMD%"=="" (
echo "Input argument missing: command"
GOTO :end
)
echo "XXX %CMD%"
And running:
script.bat echo "a b c"
Will output:
Running command [echo "a b c"]
b was unexpected at this time.
This occurs in the IF condition, but why?
How can I check if my input is empty. I know how to check if a string is empty in dos, but for some reason it doesn’t work in this combination 🙁
BTW: If I remove the IF condition it works well, that is: the command is executed correctly.
- Ed
Test for the absence of parameters first, then assign and process the command:
As to the “Why?”, it’s because the quotation mark in the value of
CMD(the one beforea) closes the quotation mark before%CMD%, and so the string appears as"echo "a b c"", and thusbbecomes separated from the string, which causes the command processor to fail. (It expects a comparison token, like==orEQU, but not some strangeb).