web-dev-qa-db-ja.com

ユーザーにキャンセルオプションを与えた後の自動シャットダウン

一部のコンピューターでスクリプトまたはツールをセットアップして、ユーザーがその日のために出発した(コンピューターのシャットダウンを忘れた)特定の時間に、たとえば深夜に自動シャットダウンしたいと思います。一部のプロセスが応答しない場合も、強制的にシャットダウンする必要があります。ただし、ユーザーがそれを使用しているコンピューターの前にいる場合は、たとえば30秒間、[キャンセル]ボタンを表示して、uTorrentのように、ユーザーがシャットダウンをキャンセルできるようにします。

Daxtar Shutdown(優れたツールですがスケジューリングもバッチファイル構築機能もありません)とSimple Shutdown Scheduler(優れたツールですがキャンセルオプションはありません)を確認しました。また、このフォーラムでシャットダウンのタグが付けられた上位の質問も確認しました。また、Windowsバッチファイル内でシャットダウンスクリプトを使用しようとしましたが、キーの「ユーザーの喜び」要件、つまり「N秒でキャンセルできるオプション」を達成する方法を見つけることができませんでした。 「リモート」の要件はありません。できれば、WindowsXP-SP3とWindows7で使用できるようにしたいと思います。

どのスクリプト、バッチファイル、ツール、またはこれらの組み合わせでこれを実現できますか?

2
Whirl Mind

これを試してみてください 、これを別の方法で行うために作成する時間がありませんでしたが、これで十分だと思います。 。 。

for /l %%N in (30ここでの数値は待機する秒数なので、3030秒間。

@echo off
setlocal enableDelayedExpansion
for /l %%N in (30 -1 1) do (
  set /a "min=%%N/60, sec=%%N%%60, n-=1"
  if !sec! lss 10 set sec=0!sec!
  cls
  choice /c:CN1 /n /m "Restart in !min!:!sec! - Press N to Restart Now, or C to Cancel. " /t:1 /d:1
  if not errorlevel 3 goto :break
)
cls
echo RESTART in 0:00 - Press N to Restart Now, or C to Cancel.
:break
if errorlevel 2 (shutdown /r /t 10) else echo restart Canceled

ソース

1
Pimp Juice IT

これが役立つと思います thread 。それを通過して、それが何か助けになるかどうか見てください。

スレッド のリンク。

使用法:シャットダウン[/ i |/l |/s |/r |/g |/a |/p |/h |/e] [/ f] [/ m\computer] [/ t xxx] [/ d [p | u:] xx:yy [/ c "コメント"]]

.。

/t xxx     Set the time-out period before shutdown to xxx seconds.
           The valid range is 0-315360000 (10 years), with a default of 30.
           If the timeout period is greater than 0, the /f parameter is
           implied.
/c "comment" Comment on the reason for the restart or shutdown.
           Maximum of 512 characters allowed.
/f         Force running applications to close without forewarning users.
           The /f parameter is implied when a value greater than 0 is
           specified for the /t parameter.

ありがとうございました。どちらかといえば教えてください。

2
Animesh Patra