I\'m doing a simple batch file that requires one argument (you can provide more, but I ignore them).
For testing, this is what I have so far.
if not
Another related tip is to use "%~1" instead of "%1". Type "CALL /?" at the command line in Windows to get more details.
if not %1 == "" (
must be
if not "%1" == "" (
If an argument isn't given, it's completely empty, not even ""
(which represents an empty string in most programming languages). So we use the surrounding quotes to detect an empty argument.
An alternative would be to set a variable, and check whether it is defined:
SET ARG=%1
IF DEFINED ARG (echo "It is defined: %1") ELSE (echo "%%1 is not defined")
Unfortunately, using %1
directly with DEFINED
doesn't work.
you have to do like this...
if not "A%1" == "A"
if the input argument %1 is null, your code will have problem.
You have to do the following:
if "%1" == "" (
echo The variable is empty
) ELSE (
echo The variable contains %1
)
Surround your %1
with something.
Eg:
if not "%1" == ""
Another one I've seen fairly often:
if not {%1} == {}
And so on...
The problem, as you can likely guess, is that the %1
is literally replaced with emptiness. It is not 'an empty string' it is actually a blank spot in your source file at that point.
Then after the replacement, the interpreter tries to parse the if
statement and gets confused.