
Tenho um comando que adiciona o timestamp no início e no final ( echo %time% & #other command# & echo %time%
). No entanto, %time%
será o mesmo, independentemente de quanto tempo o comando demorou para ser executado.
saída de exemplo:
Time start: 19:48:31.75
Pinging google.com [2a00:1450:400e:80c::200e] with 32 bytes of data:
Reply from 2a00:1450:400e:80c::200e: time=13ms
Reply from 2a00:1450:400e:80c::200e: time=13ms
Reply from 2a00:1450:400e:80c::200e: time=9ms
Reply from 2a00:1450:400e:80c::200e: time=10ms
Ping statistics for 2a00:1450:400e:80c::200e:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 9ms, Maximum = 13ms, Average = 11ms
Time end: 19:48:31.76
Existe uma maneira de fazer isso funcionar, ainda dentro de uma linha?
Obrigado
Responder1
O CMD expande variáveis e então executa cada linha. Isso significa que
echo %time% & ping 127.0.0.1 & echo %time%
é primeiro expandido e depois executado
Há também "expansão atrasada" Aqui está um exemplo de uso,e ainda mais detalhado No entanto, isso só funciona em um arquivo cmd e não na linha de comando
setlocal ENABLEDELAYEDEXPANSION
echo !time! & ping 127.0.0.1 & echo !time!
Continuar pesquisandotalvez cmd /Vpode ser usado:
cmd /V /C "echo %time% & ping 127.0.0.1 & echo !time!"
Dá o resultado esperado para mim, mas pode haver dicas que impedem alguns casos de uso.