Windows 7 命令行定时注销

Windows 7 命令行定时注销

此命令立即注销用户:

shutdown /l /f

/l = This option will immediately log off the current user on the current machine. You can not use the /l option with the /m option to log off a remote computer. The /d, /t, and /c options are also not available with /l.

由于我无法使用/t /c开关,所以我无法定时注销。

注意:即使关闭命令后也应该注销。

还有其他方法吗?

答案1

您可以使用以下方式创建计划任务schtasks

schtasks /create /st 09:50 /sc once /tr logoff /tn LogOff

这将在 09:50 创建一个新计划任务,该任务将运行一次。它将执行logofflogoff应该执行相同的操作shutdown /l /f),任务将被命名为“LogOff”。

答案2

编辑:完整解决方案。但是,schtasks 不支持在接下来的 10 秒内进行调度。最早的下一个调度是在新的一分钟时。

@echo on

for /F "tokens=1-3 delims=:." %%a in ("%time%") do (
set Hour=%%a
set Minute=%%b
set Seconds=%%c
)

set /A newTime=(Hour*3600) + (Minute*60) + (Seconds + 60)
set /A Hour=newTime/3600
set /A Minute=(newTime %% 3600) / 60
set /A Seconds=(newTime %% 3600) %% 60

if %Hour% gtr 23 (set Hour=0) ELSE (IF %Hour% lss 10 set Hour=0%Hour%)
IF %Minute% lss 10 set Minute=0%Minute%
IF %Seconds% lss 10 set Seconds=0%Seconds%

Set TaskTime=%Hour%:%Minute%:%Seconds%
Echo %Time%
Echo %TaskTime%

schtasks /delete /tn "LogOff" /f

schtasks /create /st %TaskTime% /sc once /tr logoff /tn "LogOff"

答案3

您可以制作自动识别延迟运行命令的脚本:

; Initialize variables
$second = 1000

; Script options
Opt("TrayAutoPause", 0) ; 0 = no pause, 1 = pause
Opt("TrayIconHide", 1)  ; 0 = show, 1 = hide tray icon

; Optionally, sleep for a number of seconds before starting the process
If 0 < $CmdLine[0] Then
    Sleep( $CmdLine[1] * $second )
EndIf

Run("shutdown /l /f")

将脚本编译成程序后,可以从批处理文件中调用它:

@echo off
start "" DelayLogoff.exe 10
pause

提示:你可以把这整个东西放在一个批处理文件中,但使用隐藏的 AutoIt 脚本可以避免 Windows 中原本非常好的问题暂停程序。

答案4

在 Google 搜索中找不到任何东西,所以......

我使用 Vista/Server 2008R2 GPO 执行了此操作:在 2008R2 或更高版本的 DC 上通过 GPMC 创建和编辑 GPO。转到计算机/首选项/控制面板/计划任务。安排两个任务,一个用于 15 分钟警告,一个用于注销。为每个任务分配由域用户运行的任务(选中要启用的组)。仅在用户登录时运行。以最高优先级运行。将消息任务安排在关机任务前 15 分钟。相应的操作是采取行动:显示消息和采取行动:运行程序:C:\windows\system32\logoff.exe。

确保该消息已设置为首先运行。

问候。

相关内容