LoginSignup
5
5

More than 5 years have passed since last update.

.bat(バッチファイル)で、作業時間を記録する(タイムカード)

Posted at

 一回叩くとその時間を開始時間として記録、もう一回叩くとその時間を終了時間として記録、時間の差分も記録するバッチ。

 記録する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を行わなかった場合、直接スタートアップ内のバッチを叩く)

   で、行けるはず…。

5
5
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
5
5