我が家のデスクトップPCで、大容量のファイルコピーやバックアップ作業等で、「だいたいあと2時間くらいでバックアップ終わりそうだけどもう深夜だなー」「明日の朝までPCを放っておくの電気代もったいないなー」と思います。
しかし、タスクスケジューラやコマンドプロンプトでシャットダウンを予約するのは少し面倒。
生成AIの力を借りてシャットダウンタイマーのVBスクリプト書きました。以下どうぞ。
shutdown_timer.vbs
Option Explicit
' シャットダウンタイマースクリプト(キャンセル機能付き)
Dim inputTime, targetTime, currentTime
Dim wshShell_1, wshShell_2, objFSO
Dim homePath, cancelFilePath
' キャンセル用フラグファイルのパスを設定
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set wshShell_2 = CreateObject("WScript.Shell")
homePath = wshShell_2.ExpandEnvironmentStrings("%USERPROFILE%") ' または %HOMEPATH%
cancelFilePath = homePath & "\Desktop\shutdown_cancel"
' シャットダウンする時刻を入力(形式:HH:MM)
inputTime = InputBox("シャットダウンする時刻を入力してください(例:01:50)", "シャットダウンタイマー")
If inputTime = "" Then
WScript.Quit
End If
' 現在時刻を取得
currentTime = Time
' 目標時刻を設定
targetTime = TimeValue(inputTime)
' 目標時刻が現在時刻より前の場合、翌日の時刻として処理
If targetTime < currentTime Then
targetTime = targetTime + 1
End If
' 待機時間を計算(秒単位)
Dim waitSeconds
waitSeconds = DateDiff("s", currentTime, targetTime)
' WShellオブジェクトを作成
Set wshShell_1 = CreateObject("WScript.Shell")
' 確認メッセージを表示
If MsgBox("コンピューターは次回の " & inputTime & " にシャットダウンされます。" & vbCrLf & _
"よろしいですか?" & vbCrLf & vbCrLf & _
"※キャンセルするには以下のファイルを削除してください:" & vbCrLf & _
cancelFilePath, vbYesNo + vbQuestion, "確認") = vbNo Then
WScript.Quit
End If
' キャンセル用フラグファイルを作成
Set objFSO = CreateObject("Scripting.FileSystemObject")
If Not objFSO.FileExists(cancelFilePath) Then
objFSO.CreateTextFile(cancelFilePath)
End If
' 待機中にキャンセルファイルの存在を確認
Dim sleepInterval : sleepInterval = 1000 ' 1秒ごとにチェック
Dim totalWaited : totalWaited = 0
Do While totalWaited < waitSeconds * 1000
If Not objFSO.FileExists(cancelFilePath) Then
MsgBox "シャットダウンがキャンセルされました。", vbInformation, "キャンセル"
WScript.Quit
End If
WScript.Sleep sleepInterval
totalWaited = totalWaited + sleepInterval
Loop
' キャンセルファイルを削除
If objFSO.FileExists(cancelFilePath) Then
objFSO.DeleteFile cancelFilePath
End If
' シャットダウンを実行
wshShell_1.Run "shutdown /s /t 0", 0, True
Set wshShell_1 = Nothing
Set objFSO = Nothing
使い方
shutdown_timer.vbs を実行し、時刻をHH:MMの形式で入力してください。
(例として04:30だと次回の午前4時30分にシャットダウン実行予定)

確認メッセージとキャンセルファイルの場所が表示されます。キャンセルファイルはデスクトップに生成され、これを削除するとシャットダウン予定が削除されます。

(shutdown_cancelファイルを削除すると以下の画面になり、シャットダウンタイマーがキャンセルされます。)

コメント