Os comandos a seguir podem obter o tempo de atividade do Windows como uma data e hora formatadas:
>wmic path Win32_OperatingSystem get LastBootUpTime | find "."
20201031212925.500000-180
>systeminfo | find "System Boot Time"
System Boot Time: 10/31/2020, 9:29:25 PM
>net statistics workstation | find ":"
Statistics since 10/31/2020 9:29:36 PM
>wmic os get lastbootuptime | find "."
20201031212925.500000-180
Dado que eu gostaria de evitar:
- Depender de um comando não instalado por padrão com o Windows 10
- Exigindo privilégios elevados para executar
- Usando o Powershell
- Usando VBScript
- Analisando uma string formatada de data e hora
Como posso obter o tempo de atividade do Windows em segundos para usar em um arquivo em lote?
Em primeiro lugar, entendo por que todos aqui estão pressionando o powershell . É apenas melhor , mas não ajuda se não for executado em OUTROS COMPUTADORES sem instalar ou atualizar algo.
Em vez de usar o Windows Scripting Host, use a ferramenta WMIC que acompanha o Windows. O problema com a ferramenta WMIC é que o texto que ela gera está cheio de combinações unicode e CR/LF, tornando a análise difícil. Para resolver isso, executaremos qualquer WMIC retornado por meio do utilitário findstr e o converteremos de "sucks" para "sucks less".
Espero que seja isso que você estava pedindo.
LEMBRE-SE DE QUE A ferramenta WMIC está obsoleta e eventualmente desaparecerá . Esperançosamente, até então, todos terão uma versão do powershell que funcionará para você.
Uptime
utilitário de terceiros.A Microsoft lançou um em 1999, mas desde então o abandonou. Se você pesquisar um pouco no Google, ainda poderá encontrá-lo. (Dica: https://zedt.eu/tech/windows/microsofts-uptime-utility/ )
O utilitário Microsoft Uptime funciona muito bem.
Com esse utilitário e esse pequeno script, você pode obter o tempo de atividade do sistema para a máquina local exibido em segundos:
Agora, esta pode ser a pior resposta nesta pergunta, mas de qualquer maneira uma resposta:
É um programa em C que exibirá o tempo em segundos desde a última época. Página da Wikipedia sobre isso: https://en.wikipedia.org/wiki/C_date_and_time_functions
Estas seções especificamente:
Mas bem, você realmente quer o tempo em segundos desde a última época? E, em segundo lugar, se um script em lote é o que você está usando agora: por que não considerar uma abordagem mais independente de plataforma? Ou misturar o "tipo de" solução que acabei de postar com o script em lote? Basta compilar o código-fonte C estaticamente. Ao usar o GNU GCC, você faz isso adicionando -static na linha de comando ou sinalizadores de compilação.