2012-07-26 178 views
0

如果參數無效,我有一個批次將顯示使用情況。使用批量變量中的字符串修整字符串

例如,

Running "sample.bat update fuh" 

    :usageactions 
    set actions=%* 
    set toremove=update 
    set todisplay=%actions:%toremove% =% 
    echo Error: Invalid Arguments - '%todisplay%'. 
    echo Type sample.bat %toremove% -h for usage. 

預期輸出:

Error: Invalid Arguments - 'fuh'. 
    Type sample.bat update -h for usage 

但我的輸出是:

Error: Invalid Arguments - 'update'. 
    Type sample.bat update -h for usage 

如何achived呢?任何幫助,將不勝感激。謝謝。

(順便說一句,請修改如果如此混亂的問題。)

+0

該程序是否僅支持一個參數或多個參數? – LittleBobbyTables 2012-07-26 13:20:31

+0

要參數但第二個參數應該是正確的。 – quinekxi 2012-07-26 13:22:29

回答

3

試圖展開的表達不止一次在一條線上,但是解析器不能猜測其百分比是對。

set todisplay=%actions:%toremove% =% 

你可以在這裏使用延遲擴展

setlocal EnableDelayedExpansion 
set toDisplay=!actions:%toRemove% =! 

首先%的文檔,刪除%將擴大再行看起來像

set toDisplay=!actions:update =! 

和驚歎號表達進行評估。

+0

徹底的答案應該得到複選標記。 :d – quinekxi 2012-07-26 13:29:10

0

幸運的是,我找到了解決方案,我的問題,doh。無論如何,這是解決方案。

:usageactions 
setLocal EnableDelayedExpansion 
set actions=%* 
set toremove=update 
set todisplay=!actions:%toremove% =! 
echo Error: Invalid Arguments - '%todisplay%'. 
echo Type sample.bat %toremove% -h for usage. 
endlocal 

這將顯示。

Error: Invalid Arguments - 'fuh'. 
Type sample.bat update -h for usage