
У меня есть команда, которая добавляет временную метку в начало и конец ( echo %time% & #other command# & echo %time%
). Однако она %time%
будет одинаковой, независимо от того, сколько времени заняло выполнение команды.
пример вывода:
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
Есть ли способ сделать так, чтобы эта работа по-прежнему выполнялась в пределах одной строки?
Спасибо
решение1
CMD расширяет переменные и затем выполняет каждую строку. Это означает, что
echo %time% & ping 127.0.0.1 & echo %time%
сначала расширяется, а затем выполняется
Существует также «задержанное расширение». Вот пример использования,и еще более подробно Однако это работает только в файле cmd, а не в командной строке.
setlocal ENABLEDELAYEDEXPANSION
echo !time! & ping 127.0.0.1 & echo !time!
Продолжить поисквозможно cmd /Vможет быть использован:
cmd /V /C "echo %time% & ping 127.0.0.1 & echo !time!"
Для меня это дает ожидаемый результат, но могут быть подводные камни, препятствующие некоторым вариантам использования.