Como posso logoff e ir para stand by via script Win XP?

4

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. :)

    
por Peter 21.03.2010 / 19:25

3 respostas

2

Dê uma olhada em PsShutdown . Deve fazer exatamente o que você quer.

    
por 21.12.2010 / 18:33
5

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:

  1. Crie um diretório "C:\MyProg"

  2. Crie e salve um arquivo de texto "C:\MyProg\Standby.bat"

     rem * Standby *  
     rundll32.exe powrprof.dll,SetSuspendState
    
  3. 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
    
  4. Clique com o botão direito do mouse em C:\MyProg\Logoff-Standby.bat > Enviar para > Área de trabalho (criar atalho)

por 23.01.2011 / 21:03
3

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!)

    
por 22.03.2010 / 00:03