我試圖做到這一點:如何將命令行參數傳遞給Windows批處理文件中的程序?
cd C:\Users\Public
%1 /s
%1中的名稱和可執行改變根據在那裏它被執行,但在其他方面是相同的。問題是/s
被視爲命令或程序,而不是在%1
中傳遞的可執行文件的參數。我正在嘗試做什麼?如果是這樣,語法是什麼?
我試圖做到這一點:如何將命令行參數傳遞給Windows批處理文件中的程序?
cd C:\Users\Public
%1 /s
%1中的名稱和可執行改變根據在那裏它被執行,但在其他方面是相同的。問題是/s
被視爲命令或程序,而不是在%1
中傳遞的可執行文件的參數。我正在嘗試做什麼?如果是這樣,語法是什麼?
感謝所有幫助球員。我查看了文檔和您的意見,儘管我仍然完全不確定這實際上應該如何工作,但我明白了它的工作原理。這是我想出的解決方案:
"%~1" /s
如果我或**任何其他**答案有幫助,請考慮將其標記爲已接受。 [見本頁](http://meta.stackexchange.com/questions/5234/)解釋爲什麼這很重要。 – JosefZ 2016-02-24 12:25:49
如果您保存testit.bat的內容,然後在運行時將其添加到批處理文件名後面:「testit dir」,它將使用/ s開關運行dir命令。
讓我確定我明白了這一點,我是一個Unix傢伙,所以Windows批處理文件對我來說完全是陌生的。如果我有一個名爲runit.bat的批處理文件,並輸入「runit executable」,那麼可執行文件將與/ s開關一起運行?如果我正確理解這一點,如果傳遞給%1的參數包含空格,我該怎麼辦? – Jonathan 2015-04-02 21:17:29
如果您在Windows中訪問dos提示符(單擊開始按鈕並在「搜索程序和文件」中鍵入cmd並按回車)。這應該打開一個dos窗口。在該dos窗口中,切換到testit.bat文件所在的文件夾(cd \ users \ public)。 – Eric 2015-04-02 22:09:10
抱歉,首先將您的批處理文件更改爲%〜1而不是%1。然後當你運行它時鍵入:testit「dir/p」 – Eric 2015-04-02 22:19:47
下一個例子可以幫助。注:
"
使用雙引號:如果一個參數包含空格,你仍然可以通過在「引號」周圍把它作爲一個項目 - 這非常適用於長文件名:Syntax : Escape Characters, Delimiters and Quotes;%*
是指所有的參數(例如%1 %2 %3 %4 %5 ... %255
),但只有參數%1
到%9
可通過編號來引用:Command Line arguments (Parameters)的cliparsearg.bat
腳本打印所有命令行參數:
==>type cliparsearg.bat
@echo OFF >NUL
set /A "ii=0"
:loopfor
echo param %%%ii% = %0
SHIFT
set /A "ii+=1"
if not [%0]==[] goto :loopfor
echo all %%* = %*
goto :eof
==>cliparsearg.bat withoutspaces /S 3rdPar
param %0 = cliparsearg.bat
param %1 = withoutspaces
param %2 = /S
param %3 = 3rdPar
all %* = withoutspaces /S 3rdPar
==>cliparsearg.bat with 2 spaces /S 3rdPar
param %0 = cliparsearg.bat
param %1 = with
param %2 = 2
param %3 = spaces
param %4 = /S
param %5 = 3rdPar
all %* = with 2 spaces /S 3rdPar
==>cliparsearg.bat "with 2 spaces" /S 3rdPar
param %0 = cliparsearg.bat
param %1 = "with 2 spaces"
param %2 = /S
param %3 = 3rdPar
all %* = "with 2 spaces" /S 3rdPar
資源(基本必需的讀取 Windows批處理腳本):
可能的重複[如何將命令行參數傳遞給批處理文件?](http://stackoverflow.com/questions/26551/how-to-pass-command -line-parameters-to-a-batch-file) – SomethingDark 2015-04-02 21:06:20