Dê uma olhada em PsShutdown . Deve fazer exatamente o que você quer.
Estou procurando uma maneira de escrever um script (de qualquer tipo) que me faça logoff da minha conta local do Windows e também coloque imediatamente o computador em suspensão / espera. Eu encontrei soluções que podem fazer um ou outro, mas não logoff e, em seguida, dormir tudo em um script. O comando SHUTDOWN não oferece isso e também não consigo encontrar outras opções.
Isso é para o Win XP, SP3 agora, mas algum dia também vou querer uma solução do Windows 7.
Obrigado por qualquer ideia ou explicação sobre por que isso não é possível. :)
Dê uma olhada em PsShutdown . Deve fazer exatamente o que você quer.
Este arquivo de lote é ótimo! Eu adicionei alguns ajustes para fazê-lo funcionar com o Windows XP e também diminuiu o tempo de espera pela tarefa agendada em espera. As tarefas agendadas só são executadas a cada minuto, por isso, defino o tempo máximo de espera para 1 min, 15 seg. Agora posso Logout e Standby com um simples clique de um ícone de arquivo de lote!
Veja como eu o configurei, passo a passo:
Crie um diretório "C:\MyProg"
Crie e salve um arquivo de texto "C:\MyProg\Standby.bat"
rem * Standby *
rundll32.exe powrprof.dll,SetSuspendState
Crie e salve um arquivo de texto "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
Clique com o botão direito do mouse em C:\MyProg\Logoff-Standby.bat
> Enviar para > Área de trabalho (criar atalho)
Crie um arquivo de lote,
schtasks /create /tn "sleep" /tr c:\scripts\sleep.bat /sc once /st %neartime% /ru System
rundll32 user32.dll,ExitWindowsEx
a primeira linha cria uma tarefa agendada que executa o sleep.bat como usuário do sistema em 1 minuto a partir de agora. A segunda linha registra você.
No arquivo sleep.bat, você precisa adicionar a seguinte linha, a qual enviará o PC para dormir.
rundll32.exe powrprof.dll,SetSuspendState
No primeiro arquivo de lote, você precisa descobrir a que horas ele será daqui a 1 minuto (% 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%
Isso não será instantâneo, mas será automatizado.
Alternativamente, você pode configurar o seu PC para bloquear quando sair do modo sleep e, em seguida, o comando sleep por si próprio bloqueará a estação (embora isso não faça logoff, está perto!)
Tags windows-xp sleep script