2011-11-16 55 views
9

我想用逗號分隔的參數調用批處理文件。我怎樣才能做到這一點?如何使用逗號分隔符調用批處理文件中的參數

我希望它像這個例子。

我與腳本text.bat:

@echo off 
set test=%1 
echo Sample %test% batch. 

我想運行批處理這樣的:

c:\text.bat this,is,sample 

,我期待這樣的結果:

Sample this,is,sample batch. 

任何想法我可以如何實現這一目標?

謝謝。

+0

感謝您的評論。對不起,我只是新來的。 – quinekxi

回答

14

哇!我不知道逗號的行爲如何。

您有兩種選擇。

你可以使用這個腳本:

@echo off 
set test=%~1 
echo Sample %test% batch. 

而且隨着運行:

C:\text.bat "this,is,test" 

%~1代表不帶引號的第一個參數。引號將逗號分隔的列表作爲單個參數進行分組。

或者

你可以使用這個腳本:

@echo off 
set test=%* 
echo Sample %test% batch. 

而且隨着運行:

C:\text.bat this,is,test 

%*代表的命令行參數,因爲他們打出來。

+0

感謝隊友,它的工作!是的。逗號表現如此。 – quinekxi

+0

我剛剛寫了一個循環,將所有參數甚至超出%9轉換爲單個變量,但由於一個參數爲'a,b',但是'%*'是最佳解決方案,所以我被卡住了。謝謝。 –

8

在批處理文件中,參數分隔符除了空格,逗號,分號和等號之外,所以沒有直接的方法可以做到這一點。唯一的選擇是將參數括在引號之間:c:\text.bat "this,is,sample"並使用參數%〜1消除引號:set test=%~1

+1

謝謝隊友。你的回答很簡單,但解釋一切。 :) – quinekxi

+0

您的答案增加了一些有價值的東西,這是逗號,分號和等號用作參數分隔符的事實。 (這向我解釋了爲什麼'shift'分裂了逗號分隔的字符串。)另一個答案沒有說這個。但是,您認爲原始海報的唯一選擇是使用'%〜1'。這不是真的;另一個選項(由其他答案提到)是使用'%*'。在這種情況下,用逗號分隔的列表是否用引號括起來並不重要。 – Alan

+1

@Alan:如果你讀到這個問題,OP就在談論「一個參數」,即* one *參數。另一個答案需要使用_all parameters_,例如,沒有辦法給出多於一個相同形式的參數,就像在'c:\ text.bat「中這樣,是,sample,」second,param,with,逗號「'。唯一的方法是將_each parameter_封入引號中,並使用'%〜1'和'%〜2' ... – Aacini

相關問題