2016-04-02 10 views
1

問題があります。例えばバッチ - 変数の2番目の部分を設定したい

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

、私が入力します。

display hello 

私はそれが簡単にしたい:

echo hello 

私は私のゲームでカスタムコマンドのためにこれを使用したいです。

答えて

2

最初に、"tokens=1*"を使用して、for /fループを使用して、最初の単語| notfirstwordでテキストを分割できます。詳細については、コンソールウィンドウのhelp forを参照してください。

次に、call :labelへの試みを使用できます。ここで、:labelは最初の単語が何であってもかまいません。本質的には、batch functionsを作成し、ユーザーに実行される機能を選択させることになります。ファンクションラベルが存在しない場合、errorlevelはゼロではなく、conditional executionを使用して適切に処理できます。これにより、追加する各選択肢または同義語にif /iステートメントを追加しなくても、スクリプトを簡単に拡張できます。 (2>NULをリダイレクトすることによってcall存在しないラベルを試みるため、エラーメッセージを非表示にするには良い考えかもしれません。)ここでは、完全な例を示します

@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

ありがとう!これは私のために働く:) –

関連する問題