2016-04-02 30 views
1

我遇到問題。批處理 - 我想設置變量的第二部分

set /p command= 
if %command% == "display (i want the second part of the variable here)" echo (second part of the variable) 

例如,I型:

display hello 

我希望它簡單地說:

echo hello 

我想在遊戲中使用這個自定義命令。

回答

2

首先,您可以使用"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 
+0

謝謝!這對我有用:) –

相關問題