いいえ、Bob。変数time
についてのポイントを得ていない人はあなたです。これは、システムによって設定される予約済み変数ですが、ユーザースクリプトによって上書きされる可能性があります。他の変数名は事実上、time
、date
、path
、random
とその他のものを使用することができます。 timer.bat
が
@echo off
del timerfinished.txt 2>nul
timeout %1 /nobreak>nul
echo.>timerfinished.txt
exit
ある問題については
、
set "mytime=1 am"
call :starttimer
:game
... whatever
:getinput
set "response="
set /p "response=%~1"
if not exist timerfinished.txt goto :eof
:: here change "mytime"
set "mytime=2 am"
:starttimer
start /min "" timer.bat 10
goto :eof
がtimer.bat
ファイルは、単にフラグファイルtimerfinished.txt
を削除し、それが受け取る最初のパラメータで設定された時間のための遅延(%1
- メインコードで10に設定)、ファイルを作成して終了します。
メインコードを使用すると、プロンプト-と-待ち、応答したいとき、あなたは
call :getinput "Prompt for input "
を実行し、応答が%response%
に表示されます、その後:starttimer
を使用して最初にタイマーを開始します。あなたが応答を入力するまでので実際に何もこの方式を使用してを起こりません - ユーザーは単にが
OKを入力押すと、最初はこのルーチンで応答が空であることを保証response
に何も設定しないことこと
注意その時だけ時間が増分され、ゲームは更新された時間で継続する。タイムアウトの終了が実際に何かをすることを期待している場合、choice
を使用してタイムアウトオプションで応答を入力しない限り、実際には起こりません。
スクリプトを遅延させない場合は、どのようなタイムアウトが必要ですか? – SomethingDark
システム変数 '%time%'を混乱させないでください。 '1 am'は確かに有効な値ではありません。 – Stephan
有効な値です。私は時間が働かなかったことを除いて、試しました。 –