我正在寻找一种方法来编写一个脚本(任何类型的脚本),既可以注销我的本地 Windows 帐户,又可以立即使计算机进入睡眠/待机状态。我找到了可以执行其中一项但不能注销然后睡眠的解决方案,只需一个脚本即可。SHUTDOWN 命令不提供此功能,我也找不到任何其他选项。
目前这是针对 Win XP、SP3 的,但很快我也会想要一个 Windows 7 解决方案。
感谢您提出任何想法或者解释为什么这是不可能的。:)
答案1
看一眼关机。应该完全按照您的意愿进行。
答案2
这个批处理文件很棒!我做了一些调整,使其能够与 Windows XP 兼容,同时将等待待机计划任务的时间降到最低。计划任务每分钟只运行一次,因此我将最大等待时间设置为 1 分 15 秒。现在,我只需单击批处理文件图标即可注销并待机!
以下是我一步步设置的方法:
创建目录
"C:\MyProg"
创建并保存文本文件
"C:\MyProg\Standby.bat"
rem * Standby * rundll32.exe powrprof.dll,SetSuspendState
创建并保存文本文件“C:\MyProg\Logoff-Standby.bat”
rem * Logoff & Standby * rem rem from http://superuser.com/questions/122432/how-can-i-logoff-and-go-to-stand-by-via-win-xp-script rem rem * Find time to schedule the standby task * rem rem Get current time hours, minutes, and seconds set curtime=%time% set curhh=%curtime:~0,2% set curhh=%curhh: =% set curmm=%curtime:~3,2% set curmm=%curmm: =% set curss=%curtime:~6,2% set curss=%curss: =% rem Set values for near seconds, minutes, and hours rem Scheduled tasks can only run at a new minute, so bump the time up by 1 min, 15 sec and then round down to zero seconds set /a nearss=%curss% + 15 set /a nearmm=%curmm% + 1 set /a nearhh=%curhh% if %nearss% gtr 59 ( set /a nearss=%nearss% - 60 set /a nearmm=%nearmm% + 1 ) if %nearmm% gtr 59 ( set /a nearmm=%nearmm% - 60 set /a nearhh=%nearhh% + 1 ) if %nearhh% gtr 23 set /a nearhh=%nearhh% - 24 rem Add leading zero to minutes and hours if %nearmm% lss 10 set nearmm=0%nearmm% if %nearhh% lss 10 set nearhh=0%nearhh% rem Set neartime to result rounded down to zero seconds set neartime=%nearhh%:%nearmm%:00 rem rem * Schedule task to standby * rem schtasks /create /tn "standby" /tr C:\MyProg\standby.bat /sc once /st %neartime% /ru System rem rem * Logout * rem shutdown -l -f
右击
C:\MyProg\Logoff-Standby.bat
>发给>桌面(创建快捷方式)
答案3
创建批处理文件,
schtasks /create /tn "sleep" /tr c:\scripts\sleep.bat /sc once /st %neartime% /ru System
rundll32 user32.dll,ExitWindowsEx
第一行创建一个计划任务,从现在起 1 分钟后以系统用户身份运行 sleep.bat。第二行将注销您的帐户。
在 sleep.bat 文件中,您需要添加以下行,以使 PC 进入睡眠状态。
rundll32.exe powrprof.dll,SetSuspendState
在第一个批处理文件中,你需要计算出从现在起 1 分钟后的时间 (%neartime%)
set curtime=%time%
set curhh=%curtime:~0,2%
set curhh=%curhh: =%
set curmm=%curtime:~3,2%
set curmm=%curmm: =%
if "%curmm:~0,1%" == "0" set curmm=%curmm:~1,1%
set /a nearmm=%curmm% + 2
set /a nearhh=%curhh%
if %nearmm% gtr 59 (
set /a nearmm=nearmm% - 60
SET /A nearhh=%nearhh% + 1
)
if %nearmm% gtr 59 if %nearhh% gtr 23 set /a nearhh=%nearhh% - 24
if %nearmm% lss 10 set nearmm=0%nearmm%
set neartime=%nearhh%:%nearmm%
这不会立即发生,但会实现自动化。
或者,您可以将您的电脑设置为从睡眠状态恢复时锁定,然后睡眠命令本身将锁定该站(虽然这不会将您注销,但它已关闭!)