2011-11-18 60 views
5

是否有人知道如何添加要調用我的批處理文件時要觸發的動作/?的說法?我一直使用-h來顯示使用情況,但是一旦我需要我的-h arg作其他用途。添加/?批量切換?

編輯:其實我已經通過解析屬性這樣

for %%i in (%*) do .... 

/試過嗎?參數被跳過,我會嘗試你的解決方案,看看它是不同的。

順便說一句,爲什麼當你解析%%我/? args被跳過?

回答

6

/?似乎是由for %%i in (%*)簡單地跳過,但它的for循環的通配符功能,它試圖找到一個文件匹配/?這將失敗。

在「正常」for循環中不能使用?*,而不修改結果。

您可以使用SHIFT命令來訪問所有參數。

:parameterLoop 
if "%~1"=="/?" call :help 
if "%~1"=="-h" call :help 
if "%~1"=="-o" call :other 
shift 
if not "%~1"=="" goto :parameterLoop 

如果你也想顯示所選擇的選項,你得到了與echo命令的一個問題,因爲這通常會顯示幫助,而不是/?

您可以通過使用echo(%1而不是echo %1來避免這種情況。

+0

+1我會將'/ I'開關加到'IF'命令。 –

+0

謝謝,這是偉大的:) – kitensei

3

你檢查你的命令行參數(%1,%2等)對/?字符串,如果爲true,則使用ECHO命令打印幫助。例如,

@ECHO OFF 
IF "%1"=="/?" (
    ECHO "Help Line 1" 
    ECHO "Help Line 2" 
) ELSE (
    ECHO "Do Your Action" 
) 
1

你可以試試這個:

@echo off 
if "%1"=="/?" goto print_help 
goto normal_start 

:print_help 
echo Here is your help 
goto end 

:normal_start 
echo I'm working 

:end