ログイン・ログアウト時刻を出力する (コマンドプロンプト)



コマンドプロンプト

公開日:2020/10/10 , 最終更新日:2022/10/01   

前提知識
 ・wevtutilの使い方


■コマンドプロンプトでログイン・ログアウト時刻を調べる

出退勤管理などでPCにログイン・ログアウトした時間を知りたい場合、通常ならwindowsにある機能のイベントビューアーで調べるのですが、 イベントビューアーを立ち上げるのに結構時間がかかり、めんどくさいです。そこでコマンドプロンプトから簡単に調べる方法を説明します。 プログラムはバッチファイルの形で実行できる様にします。

以下プログラムをコピペして、適当なバッチファイルとして保存し、実行してください (windows10で動作確認済み)。もしログ取得数を増やしたい場合は、c:20の数値を変えてください。

@echo off
wevtutil qe system /f:text /rd:true /q:"*[*[EventID=7001 or EventID=7002]]" /c:20 | findstr Date>log.txt

setlocal ENABLEDELAYEDEXPANSION

for /f "delims=" %%i in (log.txt) do (
set nnn=%%i
echo !nnn:~13,2!/!nnn:~16,2! !nnn:~19,5!
)

endlocal

del log.txt

pause

■注意点、うまくいかない場合

windowsのOSのバージョンが異なっていると、出力結果がおかしな数字と文字の羅列になって出てくる場合があります。その場合は以下の部分を直す必要があります。 このコマンドはwevtutil関数によって得られたイベントIDの出力結果の、所定部分を取り出している関数になります。

echo !nnn:~13,2!/!nnn:~16,2! !nnn:~19,5!

試しにプログラムの "del log.txt"という部分を削除して、もう一度プログラムを実施してみましょう。log.txtというファイルが出力されます。 その中身は以下の様になっており、上記部分は、この1行1行の13~14文字目、16~17文字目、19~24行目を出力しております。 うまくいかない場合は、出力結果と指定文字列が一致していないので、指定文字列を変更しましょう。






関連記事一覧



コマンドプロンプト