我曾在批处理文件和命令行中见过%*
的使用。
有人能举个例子,解释%*
的典型用法吗?
我曾在批处理文件和命令行中见过%*
的使用。
有人能举个例子,解释%*
的典型用法吗?
这意味着“命令行中的所有参数”。
例如,当您想将批处理文件中的命令行转发到另一个程序时,它非常有用:
REM mybatchfile.cmd
echo You called this with arguments: %*
echo I will now forward these to the DIR command.
dir %*
在之前的回答中没有提到一个重要的点:%*
会扩展为命令行中的所有参数,即使在执行SHIFT
操作后也是如此。
通常,SHIFT
操作会将参数%2
移动到%1
,将%3
移动到%2
等,因此%1
不再可用。但是%*
会忽略任何SHIFT
操作,所以完整的参数列表始终可用。这可能是一种福音,也可能是一种诅咒。
%*
扩展为传递给脚本的完整参数列表。
通常在您想调用其他程序或脚本并传递与传递给您的脚本相同的参数时使用它。
%*
修饰符是表示批处理文件中传递的所有参数的唯一修饰符。您不能将此修饰符与%~
修饰符组合使用。%~
语法必须以有效的参数值终止。
来源:
%*
不会像单独的 %n
参数那样进行解析。例如,如果参数为:
a "b c" j=k d,e,f
那么 ECHO %*
将显示:
a "b c" j=k d,e,f
但 ECHO 1=%1 2=%2 3=%3 4=%4 5=%5 6=%6 7=%7 8=%8 9=%9
将显示:
1=A 2="B C" 3=J 4=K 5=D 6=E 7=F 8= 9=
区别在于如何处理包含特殊字符但未被引号括起来的参数。
这些特殊字符通常是:空格 & ( ) [ ] { } ^ = ; ! ' + , ` ~