2017-04-24 13 views
0

私は誰かが同様の質問をしたと思いますが、私のものとは少し異なります。私はこのコードを持っている:バッチ - 2つのコマンドを同時に実行するには?

@echo off 
title Game 
set time=1 am 
timeout 10 /nobreak >nul & goto game 
set time=2 am 
:game 

にはどうすれば同時に

timeout 5 /nobreak >nul 

goto game 

作業を行うことができますか?これは、まだそれを取得しなかった場合に動作する方法です: タイムアウトが開始され、タイムアウトが終了した後にゲームをプレイすると、午前2時に時刻が変更されます。どのように私は同時にそれを行うことができ、妨害されることなくゲームをプレイすることができますか?助けてください。ありがとう!

+0

スクリプトを遅延させない場合は、どのようなタイムアウトが必要ですか? – SomethingDark

+1

システム変数 '%time%'を混乱させないでください。 '1 am'は確かに有効な値ではありません。 – Stephan

+0

有効な値です。私は時間が働かなかったことを除いて、試しました。 –

答えて

0

i thinkあなたはリアルタイムよりも速く動作する「ゲームタイム」を探しています。

他のスクリプトを使用して、以下のようなgametime変数を別の(最小化された)ウィンドウに設定します。メインスクリプトの現在の "gametime"にアクセスする必要がある場合は、<gametime.dat set /p "gametime="

GAMETIMEを使用してください。BAT:

@echo off 
set gametime=10:00 
for /f "tokens=1,2 delims=:" %%a in ("%gametime%") do (
    set hours=%%a 
    set mins=%%b 
) 
:loop 
call :increase_gametime 
timeout 5 >nul 
goto :loop 

:increase_gametime 
set /a mins+=10 
set /a hours=hours+mins/60 
set /a mins=mins%%60 
set gametime=%hours%:%mins% 
title %gametime% 
>gametime.dat echo %hours%:%mins% 
+0

ありがとうA Lot! :) –

1

いいえ、Bob。変数timeについてのポイントを得ていない人はあなたです。これは、システムによって設定される予約済み変数ですが、ユーザースクリプトによって上書きされる可能性があります。他の変数名は事実上、timedatepathrandomとその他のものを使用することができます。 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を使用してタイムアウトオプションで応答を入力しない限り、実際には起こりません。

+0

私はリアルタイムではないメントゲームの時間:) –

関連する問題