
コマンド プロンプトを使用して、たとえば 60 秒でプログラムを閉じる方法を見つけたいです。コンピューターの時間指定シャットダウン (shutdown /s /t) や taskill に似ています。
何かアイデアはありますか?これは可能ですか?
答え1
たとえば、60 秒以内にプログラムを閉じるにはどうすればよいでしょうか?
時間遅延を生成するには、ping
または を使用できます。timeout
timeout
Windows XP では使用できません。timeout
カウントダウンを表示します。
ping
解決
60 秒後に強制終了するには、notepad
次のコマンドを使用します。
ping 127.0.0.1 -n 61 > nul && taskkill /im notepad.exe
注記:
- s間に 1 秒の遅延があるため、61 回の ping が必要です
ping
。
例:
F:\test>time /t && ping 127.0.0.1 -n 61 > nul && taskkill /im notepad.exe && time /t
17:56
SUCCESS: Sent termination signal to the process "notepad.exe" with PID 8084.
17:57
ループバック アドレスを使用した PING コマンドによっても遅延が生じる可能性があります。連続する各 ping の間には 1 秒の遅延があります。テストでは、PING は Sleep.exe や Timeout.exe よりもプロセッサ時間を消費しないため、他のプロセスをバックグラウンドで実行できます。PING コマンドは Ctrl-C でのみ中断できます。出典: Clay Calvert (usenet 2001)
たとえば、40 秒の遅延の場合:
PING -n 41 127.0.0.1>ヌル
ソースタイムアウト
timeout
解決
60 秒後に強制終了するには、notepad
次のコマンドを使用します。
timeout /t 60 && taskkill /im notepad.exe
ノート:
timeout
Windows XP では使用できません。timeout
実装が不十分です。「タイムアウト 1」を実行すると、「次の秒」まで待機しますが、これは 0.1 秒後に発生する可能性があります。「タイムアウト 1」を数回実行して、遅延の違いを観察してください。5 秒以上の場合は大した問題ではないかもしれませんが、1 秒の遅延ではうまく機能しません。
例:
F:\test>time /t && timeout /t 60 && taskkill /im notepad.exe && time /t
18:07
Waiting for 0 seconds, press a key to continue ...
SUCCESS: Sent termination signal to the process "notepad.exe" with PID 5412.
18:08
参考文献
- Windows CMD コマンドラインの AZ インデックス- Windows コマンド ラインに関連するあらゆることに関する優れたリファレンス。
- タイムアウト- バッチ ファイル内で使用するために、実行を数秒または数分間遅延します。
- ピン- ネットワーク接続をテストします - 成功した場合、ping は IP アドレスを返します。
- Windows のコマンド プロンプト (または DOS) で 5 秒間スリープするにはどうすればいいですか?
答え2
使ってみるタスクスケジューラ。
- 目的のプログラムが起動されたときにイベントが発生するようにイベント ログを構成します。
- #1 の特定のイベントがログに記録されたときに実行されるようにスケジュールされたタスクを構成します。スケジュールされたタスクでは、遅延 (この場合は 60 秒) を設定でき、任意のコマンド/スクリプトを起動できます。
答え3
私の例を試してみてください:
choice /t 5 /d a /c ab /n >nul & taskkill /im URprocess.exe
説明: 「choice」は 5 秒待って終了し、その後 taskkill は「URprocess」を閉じます。
答え4
私はWindows 10に付属のscriptrunner.exeを使用しています。パスになかったので、検索する必要がありました。ドキュメントは次の場所にあります。https://ss64.com/nt/scriptrunner.html
私はよく大量の電子書籍を EPUB に変換しますが、途中で変換が止まってしまうことがよくあります。そこで、次の内容のバッチを作成しました。
@echo off
for /F "delims=" %%a in (files.txt) do (
if not exist "%%a.epub" ScriptRunner.exe -appvscript "c:\Program Files (x86)\calibre2\ebook-convert.exe" "%%a" "%%a.epub" -appvscriptrunnerparameters -timeout=60
if exist "%%a.epub" del "%%a"
)
Files.txt には、変換が必要なパスを持つすべてのファイルが含まれています。変換には、calibre の ebook-convert.exe を使用します。引数 -timeout=60 は、実行が停止するまでの秒数 (ここでは 60) です。変換が早く準備できれば、次の行が実行されます。
これらはすべてうまく機能します。