2017-07-07 14 views
2

(これは私の最初の投稿です。)バッチ:最後のユーザー入力を表示

最後のユーザー入力をバッチファイルに表示できますか?私はここでそれを簡単に保つつもりです。 %の例%と

@echo off 

:menu 
echo Type 1 to proceed. 
set /p example= 
if "%example%" == "1" GOTO :proceed 
GOTO :error 

:proceed 
pause 

:error 
cls 
echo You wrote (last user input), that's not correct. 
timeout 30 
GOTO :menu 

私は(最後のユーザ入力)を置き換えることができることを知っているが、その後、私はすべてのカテゴリのカスタムエラーメッセージを作成する必要があるだろうと、約50それらのがあります。最後の入力コマンドで簡単になるでしょう。

ちなみに私はバッチについて知っていることすべてを自分自身に教えてくれたので、私の例にはおそらく大きな問題があるかもしれませんが、何とかしています。

答えて

1

:menu1 
echo Type 1 to proceed. 
call :userInput example 
if "%example%" == "1" GOTO :proceed 
GOTO :error 

:menu2 
echo Type 42 to proceed. 
call :userInput answer 
if "%answer%" == "42" GOTO :proceed 
GOTO :error 

:userInput 
set /p LAST_INPUT= 
set "%1=%LAST_INPUT%" 
exit /b 

:proceed 
pause 

:error 
cls 
echo You wrote "%LAST_INPUT%", that's not correct. 
timeout 30 
GOTO :menu 
+0

ええ。これは良いです。+ 1 – npocmaka

1

私は一時ファイルなしでそれを行う方法がわかりません。あなたが機能(USER_INPUT)にすべてのユーザー入力を一元化でき

@echo off 
setlocal enableDelayedExpansion 
set "last=" 
set "but_last=" 
doskey /history > log.txt 
for /f "tokens=* delims=" %%# in (log.txt) do (
    set "but_last=!last!" 
    set "last=%%#" 
) 

echo "%but_last%" 
del /s /q log.txt >nul 2>nul 
+0

グッド:あなたは​​(これはスクリプト自体の実行をスキップします)が必要コンソールをint書かれたものを取得するには解決策、おそらくちょっと余計なこと:-) – jeb

関連する問題