Como alternativa, você pode usar um timer externo e um desligamento forçado no momento correto. Por exemplo:
timeout -t 3600 -nobreak && shutdown -s -t 00
Observe que uma ressalva dessa abordagem é que o comando shutdown
não é realmente enviado (por exemplo, para computadores em rede) até que timeout
seja concluído, portanto, será necessário que o computador remetente esteja ligado em uma conexão ativa o fim do timeout
. Uma solução alternativa é executar o comando inteiro diretamente no computador de destino, por exemplo, com o PsExec.
Se você quiser ocultar também a janela de comando, há várias maneiras de fazê-lo .
Pessoalmente, sou a favor de um comando baseado no PowerShell que se esconde (executado a partir de uma janela cmd
neste caso):
start powershell.exe -WindowStyle Hidden -Command "sleep 3600; shutdown -s -t 00"
O PowerShell pode ser configurado para remoting também. E pode ser preferível usar o comando Stop-Computer
nativo em vez de shutdown
.