首先,您可以使用"tokens=1*"
將firstword | notfirstword上的文本與for /f
循環分開。有關詳細信息,請參閱控制檯窗口中的help for
。
接下來,您可以嘗試使用call :label
,其中:label
無論第一個字是什麼。實質上,您正在創建batch functions並讓用戶選擇執行哪個功能。如果函數標籤不存在,則errorlevel將不爲零,並且您可以使用conditional execution進行適當處理。這使得您可以輕鬆擴展腳本,而無需爲每個選擇或您添加的同義詞添加if /i
語句。 (這可能是隱藏的錯誤消息試圖call
一個不存在的標籤通過重定向2>NUL
一個好主意。)下面是一個完整的例子:
@echo off & setlocal
:entry
set /P "command=Command? "
for /f "tokens=1*" %%I in ("%command%") do (
2>NUL call :%%I %%J || (
if errorlevel 1000 (exit /b 0) else call :unsupported %%I
)
goto :entry
)
:display
:echo
:say
:show
echo(%*
exit /b 0
:ping
ping %~1
exit /b 0
:exit
:quit
:bye
:die
echo OK, toodles.
exit /b 1000
:unsupported <command>
1>&2 echo %~1: unrecognized command
exit /b 0
謝謝!這對我有用:) –