echo %time% дублирует выходные данные

echo %time% дублирует выходные данные

У меня есть команда, которая добавляет временную метку в начало и конец ( 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!"

Для меня это дает ожидаемый результат, но могут быть подводные камни, препятствующие некоторым вариантам использования.

Связанный контент