1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[DOS]バッチファイルで、シャットダウンタイマーを作ってみた

Posted at

はじめに

筆者は、寝付きがあまり良くないので、音楽をかけたり、動画サイトを見たりしながら、寝ております。
(それが原因で、寝付きが良くないのかもしれないですが)
そのため、すごい昔(たぶんWindows98の頃)にダウンロードしたシャットダウンタイマーを使って、いつ寝てしまっても自動的に、PCをシャットダウンするようにしていました。

流石に、そんな古いツールを使い続けるのもどうかな、と思って自分で作ることにしました。
会社でも、帰宅直前に大きすぎる圧縮ファイルの解凍完了を待つ、のような状況に使えます。
(そんな状況、そうそうないですが)

今回は、以下を参考にさせていただきました。
コマンドプロンプトで sleep するためのテクニック - Qiita

成果物

今どき、誰もDOSコマンドを覚えたい、ということはないだろうと思うので、
まずは作ったバッチファイルの内容を載せます。
ファイル名は好きに変えてください。(拡張子は除く)

まずは、タイトル通りにシャットダウンタイマーから。
後半のtaskkillコマンドは、シャットダウン時にひっかかる(強制終了するか聞かれる)ようなプロセスがありそうな方だけ、実行すればいいです。

ShutDownTimer.bat
@echo off
set /p in=シャットダウンまで何分?:

for /f %%f in ('time /t') do set tm=%%f

set /a hr = %tm:~0,1% * 10 + %tm:~1,1%
set /a mn = %tm:~3,1% * 10 + %tm:~4,1% + in

set /a hr = hr + (mn / 60)
set /a mn = mn %% 60
set /a hr = hr %% 24

set mn=0%mn%
set mn=%mn:~-2,2%

for /l %%n in (%in%, -1, 1) do (
	echo. %%n 分
	title シャットダウン %hr%:%mn% [残り %%n 分]
	ping -n 61 localhost >nul
)

taskkill /f /im "chrome.exe"

shutdown -f -s -t 0

一応、ログオフ(サインアウト)タイマーも。
表示文言と、shutdownコマンドのオプション以外は同じです。

LogOffTimer.bat
@echo off
set /p in=ログオフまで何分?:

for /f %%f in ('time /t') do set tm=%%f

set /a hr = %tm:~0,1% * 10 + %tm:~1,1%
set /a mn = %tm:~3,1% * 10 + %tm:~4,1% + in

set /a hr = hr + (mn / 60)
set /a mn = mn %% 60
set /a hr = hr %% 24

set mn=0%mn%
set mn=%mn:~-2,2%

for /l %%n in (%in%, -1, 1) do (
	echo. %%n 分
	title ログオフ %hr%:%mn% [残り %%n 分]
	ping -n 61 localhost >nul
)

taskkill /f /im "chrome.exe"

shutdown -f -l

DOSコマンド詳細

  • set
    • /pオプションで、ユーザー入力を変数に代入。
    • /aオプションで、数式の計算結果を変数に代入。
    • /aオプションでの数式内では、変数を%!で囲まなくても、変数の値になる模様。
  • for
    • /fオプションで、コマンド実行結果の各行を使ったループ。今回はtime /tの出力が、hh:mmの1行であるため、1回しかループしない。
  • title
    • DOS窓自体のキャプション変更。DOS窓をいちいち開かなくても、いつシャットダウン/ログオフするか分かるようにするため、使用。
  • ping
  • taskkill
    • /fオプションで、強制終了。
    • /imオプションで、イメージ名(≒exeファイル名)を指定。

終わりに

筆者は、ソースコードの「縦」を揃えるのが大好きです。
そのため、変数名の文字数もなるべく統一するのですが、日付や時刻に関する変数名には絶望します。。。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?