一、批处理文件的参数
执行批处理文件时,可以给其传递参数。参数位于批处理文件名后,使用空白分隔。例如:在“C:\>demo.bat arg1 arg2”命令中,arg1是传递给demo.bat的第一个参数,arg2是传递给demo.bat的第二个参数。
在批处理文件中,使用 %0 表示批处理文件本身,使用 %1 来接收传递给它的第一个参数,使用 %2 接收传递给它的第二个参数 ... 使用 %9 接收传递给它的第九个参数。使用 %* 接收传递给它的全部参数。
示例
::demo.bat
@echo off
echo first arg: %0
echo first arg: %1
echo second arg: %2
echo third arg: %3
echo four arg: %4
echo five arg: %5
echo six arg: %6
echo seven arg: %7
echo eight arg: %8
echo nine arg: %9
:: %10 被解析为 %1 和 0
echo error arg: %10
echo all arg: %*
运行
C:\>demo.bat arg0 arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9
batch file self: demo.bat
first arg: arg0
second arg: arg1
third arg: arg2
four arg: arg3
five arg: arg4
six arg: arg5
seven arg: arg6
eight arg: arg7
nine arg: arg8
error arg: arg00 // %1是arg0,故这里为arg00
all arg: arg0 arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9
C:\>
【总结】
- %0 代表批处理文件自身(例如上例中的demo.bat)
- %1 接收传递给批处理文件的第一个参数,%2 接收第二个参数 ... %9 接收第九个参数
- %9 后面的变量(例如:%10)是无效的
- %* 接收所有参数(可以无限多个,不只接收前九个参数)
- %0-%9 、%* 用于批处理文件,在DOS命令行环境使用则无效
- %0-%9 能被扩充,但是 %* 不能被扩充
扩充变量 https://blog.csdn.net/mt15306338066/article/details/127214009
二、标签的参数
使用call命令调用标签时,也可以给标签传递参数
- 和在命令行给批处理文件传参一样,给标签传参,也使用 %0 - %9 和 %*,区别:批处理文件参数 %0 表示批处理文件本身,而标签参数 %0 表示标签本身
- 只有标签被call命令调用时,标签中的 %0 - %9 和 %* 才会被解析为call命令给标签传递过来的参数。如果标签不是被call命令调用,在其它情况下标签被执行时(例如:goto :label或批处理文件按照程序流程执行标签中的代码),标签中的 %0 - %9 和 %* 会被解析为批处理文件的参数
- 标签的 %0-%9 也能被扩充, %* 也不能被扩充
示例
::demo.bat
@echo off
echo batch file self: %0
echo batchFile first arg: %1
echo batchFile second arg: %2
call :target t1 t2
echo the line after call
:target
echo 0 in lable: %0
echo 1 in lable: %1
echo 2 in lable: %2
运行
写作不易,如果本文帮到了您,请您 “在下面一圈三连”。