2012-08-06 131 views
0

H大家好。我打算寫一個批處理(umake.bat)文件,它執行以下操作:如何檢查CMD/BAT命令行參數是否與特定單詞匹配?

檢查-f是否出現在bat參數之一中,以便我可以在.bat中採取不同的操作。

案例1:

用戶呼叫

umake 

裏面umake.bat我將執行

make -f Makefile.umk 

案例2:

用戶呼叫

umake debug=1 var="big cat" 

裏面umake.bat我將執行

make debug=1 var="big cat" -f Makefile.umk 

案例3:

用戶呼叫

umake -f special.mk debug=1 

裏面umake.bat我將執行

make -f special.mk debug=1 

案例4:

用戶呼叫

umake debug=1 -f 

裏面umake.bat我將執行

make debug=1 -f 

在情況4,使(GNU做)將不會成功,因爲-f後失蹤的文件名。爲了簡單起見,我不必關心這一點,因爲這是用戶的錯,GNU make會報告問題。

摘要:

  • 如果用戶提供命令參數-f xxx,我會通過這些參數make
  • 如果用戶不提供-f xxx,我會撥打make與所有用戶的參數,以及追加-f Makefile.umk作爲make的額外參數。

謝謝。

回答

0

我似乎找到了解決方案,雖然代碼是一些冗長的東西。

@echo off 

set _F_MAKEFILE=-f Makefile.umk 

:CHECK_PARAM_AGAIN 
if "%~1" == "" (
    goto CHECK_PARAM_DONE 
) else (
    if "%~1" == "-f" (
    set _F_MAKEFILE= 
    goto CHECK_PARAM_DONE 
) 
    rem echo @@@%1 
    shift 
) 
goto CHECK_PARAM_AGAIN 

:CHECK_PARAM_DONE 

@echo on 
make %* %_F_MAKEFILE% 

注:

  • 使用%~1是必須的。因爲:如果%1的值爲"big cat",%~1使其爲big cat,以便我們可以用引號將%~1包圍起來。
相關問題