向批处理脚本添加标志

Zac*_*ckG 8 flags batch-file

我正在编写一个将在目录上运行的Batch脚本.我希望能够添加一个标志(例如-r或/ r或类似的东西),使脚本运行文件夹树而不是单个目录.是否可以使用批处理添加标记选项?

谢谢

Nat*_*man 13

当然有可能.命令行参数作为%1,%2等传递到批处理文件中.(%0是批处理文件的名称.)

IF "%1"=="/r" ECHO You passed the /r flag.
Run Code Online (Sandbox Code Playgroud)

使用SHIFT下降的第一个参数,并通过一个把所有的人过来.如果要允许/ r在命令行中的任何位置,可以使用它来获得更多的功能.例如:

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

或者%*在这样的FOR循环中使用(扩展到整个参数列表):

FOR %%A IN (%*) DO (
    IF "%%A"=="/r" ECHO You passed the /r flag.
)
Run Code Online (Sandbox Code Playgroud)

  • 您还可以使用`for`循环将参数处理为`%*`.[实施例](http://stackoverflow.com/a/15002975/1683264) (2认同)