是否有人知道如何添加要調用我的批處理文件時要觸發的動作/?的說法?我一直使用-h來顯示使用情況,但是一旦我需要我的-h arg作其他用途。添加/?批量切換?
編輯:其實我已經通過解析屬性這樣
for %%i in (%*) do ....
但/試過嗎?參數被跳過,我會嘗試你的解決方案,看看它是不同的。
順便說一句,爲什麼當你解析%%我的/? args被跳過?
是否有人知道如何添加要調用我的批處理文件時要觸發的動作/?的說法?我一直使用-h來顯示使用情況,但是一旦我需要我的-h arg作其他用途。添加/?批量切換?
編輯:其實我已經通過解析屬性這樣
for %%i in (%*) do ....
但/試過嗎?參數被跳過,我會嘗試你的解決方案,看看它是不同的。
順便說一句,爲什麼當你解析%%我的/? args被跳過?
的/?
似乎是由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
來避免這種情況。
你檢查你的命令行參數(%1,%2等)對/?字符串,如果爲true,則使用ECHO
命令打印幫助。例如,
@ECHO OFF
IF "%1"=="/?" (
ECHO "Help Line 1"
ECHO "Help Line 2"
) ELSE (
ECHO "Do Your Action"
)
你可以試試這個:
@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
+1我會將'/ I'開關加到'IF'命令。 –
謝謝,這是偉大的:) – kitensei