windows 写一个统计用户登录退出时间的记录脚本 ,包括登录时间,使用时长
时间: 2024-04-04 10:30:05 浏览: 18
好的,下面是一个基于Windows的脚本示例,可以统计用户的登录和退出时间以及使用时长:
```batch
@echo off
setlocal enabledelayedexpansion
set LOG_FILE=login_log.txt
echo User Login/Logout Time Log > %LOG_FILE%
echo ======================== >> %LOG_FILE%
:loop
query user | findstr /i "console" > nul
if %errorlevel% equ 0 (
for /f "skip=1 tokens=1,3,4,5" %%i in ('query user ^| findstr /i "console"') do (
set "username=%%i"
set "logintime=%%j"
set "sessionname=%%k"
set "sessionid=%%l"
)
timeout /t 1 > nul
query user | findstr /i "console" > nul
if %errorlevel% neq 0 (
for /f "tokens=2 delims=:" %%i in ("%logintime%") do (
set /a "loginhour=%%i"
)
set /a "loginminute=%logintime:~3,2%"
set /a "loginsecond=%logintime:~6,2%"
set "logouttime=%time%"
for /f "tokens=2 delims=:" %%i in ("%logouttime%") do (
set /a "logouthour=%%i"
)
set /a "logoutminute=%logouttime:~3,2%"
set /a "logoutsecond=%logouttime:~6,2%"
set /a "usedhours=logouthour-loginhour"
set /a "usedminutes=logoutminute-loginminute"
set /a "usedseconds=logoutsecond-loginsecond"
if %usedseconds% lss 0 (
set /a "usedseconds=usedseconds+60"
set /a "usedminutes=usedminutes-1"
)
if %usedminutes% lss 0 (
set /a "usedminutes=usedminutes+60"
set /a "usedhours=usedhours-1"
)
set "logintime=!logintime: =0!"
set "logouttime=!logouttime: =0!"
echo User: %username%, Login Time: !logintime!, Logout Time: !logouttime!, Usage: !usedhours!:!usedminutes!:!usedseconds! >> %LOG_FILE%
)
goto loop
)
```
这个脚本会在运行时创建一个名为 "login_log.txt" 的日志文件,并记录用户的登录时间、退出时间和使用时长。你可以根据需要修改日志文件的路径和名称。
请注意,这个脚本只能统计当前处于活动状态的用户的登录和退出时间。如果有多个用户同时登录,它只会记录最后一个用户的信息。如果需要记录所有用户的信息,可能需要使用其他更复杂的方法。
希望对你有帮助!如果还有其他问题,请随时提问。