29

Windows バッチ ファイルを使用してプログラムを起動したいと考えています。ただし、プログラムは特定のタイムアウト値の後に停止する必要があります。例: プログラムを 60 秒間実行し、60 秒後に停止します。

Linux では、timeout私がやりたいことを行うためのこの素敵なコマンドがあります。Windowsにもtimeoutコマンドがありますが、コマンドを一時停止して実行を遅らせるだけです。そうするためにWindowsの下に何か他のものがありますか?

セットアップ: Windows 7、64 ビット、プロフェッショナル

4

5 に答える 5

39
start yourprogram.exe
timeout /t 60
taskkill /im yourprogram.exe /f
于 2012-11-22T14:57:46.783 に答える
13

バリCは簡潔で要点を答えました。もう少し機能的で再利用可能なものが必要でした。バリCの例に基づいています。私はこれを思いつきました。誰かが私と同じ必要がある場合。

あなたの.bat

REM...

CALL STARTwaitKILL..bat /relative/path/your_program.exe

REM...

STARTwaitKILL.BAT

@ECHO OFF 
IF[%1]==[] GOTO EOF
IF NOT EXIST %1 GOTO EOF

REM SET PRIORITY=/NORMAL
REM ADJUST PRIORITY, BELOWNORMAL LETS BATCH FILE RUN MORE SMOOTHLY
REM WITH A PROGRAM THAT CONSUMES MORE CPU. SEE ABOUT MAXWAIT BELLOW
SET PRIORITY=/BELOWNORMAL
REM SET PRIORITY=/LOW
REM 0 NORMAL WINDOW :: 1 NO WINDOW :: 2 MINIMIZED WINDOW
SET /A HIDDEN=1
REM MAXWAIT HERE IS MORE LIKE MINIMUM WAIT IN WINDOWS.
SET MAXWAIT=10
SET WAITCOUNT=0

SET ARGS=/I %PRIORITY%
IF %HIDDEN% EQU 1 SET ARGS=%ARGS% /B
IF %HIDDEN% EQU 2 SET ARGS=%ARGS% /MIN

START %ARGS% %1

:WAIT
IF %WAITCOUNT% GEQ %MAXWAIT% GOTO KILL_IT

TIMEOUT /T 1 > NUL
SET /A WAITCOUNT+=1
FOR /F "delims=" %%a IN ('TASKLIST ^| FIND /C "%~nx1"') DO IF %%a EQU 0 GOTO RUN_DONE
GOTO WAIT

:KILL_IT
TASKKILL /IM %~nx1 /F > NUL
:RUN_DONE

優先順位などについてより多くの引数を取るために鉱石を肉付けすることもできますが、私はそれを必要としません. 追加するのは難しくありません。

于 2013-08-04T16:49:15.600 に答える
4

アプリを遅延させたり、アプリのタイムアウトを設定したりするコマンドが Windows に存在しない

Windows のタイムアウトは、CMD/Batfile の実行プロセスを遅らせるためのものであり、それ以上のユーティリティではありません。

そのために外部ツールを使用できます。今は名前を覚えていませんが、多くのアンダーグラウンド ソフトウェアがあります。申し訳ありませんが、autoit の公式フォーラムに、タイムアウトを設定してアプリを起動するための同様のコマンドライン ツールが存在することを覚えています。ツールNIRCMDまたはps2execで、ヘルプファイルまたはWAIKキット内の誰かを確認してください。

これはあなたができる唯一のことです:

@Echo OFF

:: First launch the app in background mode, because some applications stops the execution of CMD.
Start /B ".\Dir\Your app.exe"

:: Then stay in background for a certain time
Timeout /T "Seconds"

:: Continue your code...
Pause&Exit
于 2012-11-22T15:30:06.577 に答える
0

Windows 10 では、最も簡単な方法はscriptrunnerを使用することです。

一時停止コマンドを実行してタイムアウトを示します (これにより、呼び出されたプロセスが強制終了されます)。

ScriptRunner.exe -appvscript cmd "/c" "pause" -appvscriptrunnerparameters -wait -timeout=20
于 2020-11-11T13:45:37.170 に答える