我想用逗號分隔的參數調用批處理文件。我怎樣才能做到這一點?如何使用逗號分隔符調用批處理文件中的參數
我希望它像這個例子。
我與腳本text.bat:
@echo off
set test=%1
echo Sample %test% batch.
我想運行批處理這樣的:
c:\text.bat this,is,sample
,我期待這樣的結果:
Sample this,is,sample batch.
任何想法我可以如何實現這一目標?
謝謝。
我想用逗號分隔的參數調用批處理文件。我怎樣才能做到這一點?如何使用逗號分隔符調用批處理文件中的參數
我希望它像這個例子。
我與腳本text.bat:
@echo off
set test=%1
echo Sample %test% batch.
我想運行批處理這樣的:
c:\text.bat this,is,sample
,我期待這樣的結果:
Sample this,is,sample batch.
任何想法我可以如何實現這一目標?
謝謝。
哇!我不知道逗號的行爲如何。
您有兩種選擇。
你可以使用這個腳本:
@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
的%*
代表的命令行參數,因爲他們打出來。
感謝隊友,它的工作!是的。逗號表現如此。 – quinekxi
我剛剛寫了一個循環,將所有參數甚至超出%9轉換爲單個變量,但由於一個參數爲'a,b',但是'%*'是最佳解決方案,所以我被卡住了。謝謝。 –
在批處理文件中,參數分隔符除了空格,逗號,分號和等號之外,所以沒有直接的方法可以做到這一點。唯一的選擇是將參數括在引號之間:c:\text.bat "this,is,sample"
並使用參數%〜1消除引號:set test=%~1
。
謝謝隊友。你的回答很簡單,但解釋一切。 :) – quinekxi
您的答案增加了一些有價值的東西,這是逗號,分號和等號用作參數分隔符的事實。 (這向我解釋了爲什麼'shift'分裂了逗號分隔的字符串。)另一個答案沒有說這個。但是,您認爲原始海報的唯一選擇是使用'%〜1'。這不是真的;另一個選項(由其他答案提到)是使用'%*'。在這種情況下,用逗號分隔的列表是否用引號括起來並不重要。 – Alan
@Alan:如果你讀到這個問題,OP就在談論「一個參數」,即* one *參數。另一個答案需要使用_all parameters_,例如,沒有辦法給出多於一個相同形式的參數,就像在'c:\ text.bat「中這樣,是,sample,」second,param,with,逗號「'。唯一的方法是將_each parameter_封入引號中,並使用'%〜1'和'%〜2' ... – Aacini
感謝您的評論。對不起,我只是新來的。 – quinekxi