一回叩くとその時間を開始時間として記録、もう一回叩くとその時間を終了時間として記録、時間の差分も記録するバッチ。
記録するtxtファイルは、デフォルトではバッチファイルと同じディレクトリになってます。
何かの作業のはじめに叩き、終わったらもっかい叩く。後から作業時間を見て鬱る。
コード
kanri.bat
set nowtime=%time%& set nowdate=%date:/=%& (for /f "tokens=1,2,3" %%m in (kanri.txt) do set predate=%%m& set pretime=%%n& set previous=%%o) || set present=EXIT
if %previous% == EXIT echo %nowdate% %nowtime% START>>kanri.txt& exit
for /f "tokens=1-8 delims=:. " %%a in ("%pretime%%nowtime%") do set /a diff=(nowdate-predate)*8640000+(%%e0-%%a0)*36000+(1%%f-1%%b)*6000+(1%%g-1%%c)*100+1%%h-1%%d
set /a D1=%diff:~0,-2%0/10,D2=10%diff:~-2,2%%%100+100
echo %nowdate% %nowtime% EXIT (%D1%.%D2:~1,2%sec)>>kanri.txt
出力
kanri.txt
20160306 1:08:24.23 START
20160306 1:12:12.36 EXIT (228.13sec)
20160306 1:19:20.28 START
20160306 1:19:30.79 EXIT (10.51sec)
開始から終了までの間に日をまたいでも、時間の差分はきちんと出るはずです。多分。
月をまたいだ場合はお察し。
タイムカードとして使う場合
PC起動時にSTART記録を行い、EXIT記録とともにシャットダウンする(勤怠管理?)
方法
1:出力ファイルのパスをデスクトップかなんかに変える。(任意)
2:バッチの最後にシャットダウンコマンドを付け足す。
3:スタートアップにこのバッチを突っ込む。
4:スタートアップ内のバッチへのショートカットを作る。(任意)
5:シャットダウンしたいときに、そのショートカットを叩く。
(4を行わなかった場合、直接スタートアップ内のバッチを叩く)
で、行けるはず…。