Adding flags to a batch script

ZackG picture ZackG · Feb 28, 2013 · Viewed 14.9k times · Source

I'm writing a Batch script that will run on a directory. I want to be able to add a flag (such as -r or /r or something like that) that will make the script run the folder tree instead of the single directory. Is it possible to add flag options using batch?

Thanks

Answer

Nate Hekman picture Nate Hekman · Feb 28, 2013

Certainly it's possible. Command line parameters are passed in to your batch file as %1, %2, etc. (%0 is the name of the batch file.)

IF "%1"=="/r" ECHO You passed the /r flag.

Use SHIFT to drop the first argument and move all the others over by one. You can use that to get a bit fancier if you want to allow that /r to be anywhere in the command line. For example:

:processargs
SET ARG=%1
IF DEFINED ARG (
    IF "%ARG%"=="/r" ECHO You passed the /r flag.
    SHIFT
    GOTO processargs
)

Or use %* (which expands to the entire argument list) in a FOR loop like this:

FOR %%A IN (%*) DO (
    IF "%%A"=="/r" ECHO You passed the /r flag.
)