[英]What does %* mean in a batch file?
我已經在批處理文件和命令行中看到了%*
的用法。
有人可以舉例說明%*
的典型用法嗎?
它的意思是“命令行中的所有參數”。
例如,當您想將命令行從批處理文件轉發到另一個程序時,它很有用:
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 "bc" j=kd,e,f
然后ECHO %*
將顯示:
a "bc" j=kd,e,f
但是ECHO 1=%1 2=%2 3=%3 4=%4 5=%5 6=%6 7=%7 8=%8 9=%9
會顯示:
1=A 2="BC" 3=J 4=K 5=D 6=E 7=F 8= 9=
不同之處在於如何處理包含特殊字符但未包含在引號中的參數。 特殊字符是通常的嫌疑人:空格 & ( ) [ ] { } ^ = ; ! ' + , ` ~
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.