2015-04-02 72 views
0

我試圖做到這一點:如何將命令行參數傳遞給Windows批處理文件中的程序?

cd C:\Users\Public 
%1 /s 

%1中的名稱和可執行改變根據在那裏它被執行,但在其他方面是相同的。問題是/s被視爲命令或程序,而不是在%1中傳遞的可執行文件的參數。我正在嘗試做什麼?如果是這樣,語法是什麼?

+0

可能的重複[如何將命令行參數傳遞給批處理文件?](http://stackoverflow.com/questions/26551/how-to-pass-command -line-parameters-to-a-batch-file) – SomethingDark 2015-04-02 21:06:20

回答

0

感謝所有幫助球員。我查看了文檔和您的意見,儘管我仍然完全不確定這實際上應該如何工作,但我明白了它的工作原理。這是我想出的解決方案:

"%~1" /s 
+0

如果我或**任何其他**答案有幫助,請考慮將其標記爲已接受。 [見本頁](http://meta.stackexchange.com/questions/5234/)解釋爲什麼這很重要。 – JosefZ 2016-02-24 12:25:49

0

如果您保存testit.bat的內容,然後在運行時將其添加到批處理文件名後面:「testit dir」,它將使用/ s開關運行dir命令。

+0

讓我確定我明白了這一點,我是一個Unix傢伙,所以Windows批處理文件對我來說完全是陌生的。如果我有一個名爲runit.bat的批處理文件,並輸入「runit executable」,那麼可執行文件將與/ s開關一起運行?如果我正確理解這一點,如果傳遞給%1的參數包含空格,我該怎麼辦? – Jonathan 2015-04-02 21:17:29

+0

如果您在Windows中訪問dos提示符(單擊開始按鈕並在「搜索程序和文件」中鍵入cmd並按回車)。這應該打開一個dos窗口。在該dos窗口中,切換到testit.bat文件所在的文件夾(cd \ users \ public)。 – Eric 2015-04-02 22:09:10

+0

抱歉,首先將您的批處理文件更改爲%〜1而不是%1。然後當你運行它時鍵入:testit「dir/p」 – Eric 2015-04-02 22:19:47

0

下一個例子可以幫助。注:

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批處理腳本):

相關問題