Подтвердить что ты не робот

Печать текущей даты и времени в DOS script

У меня есть script, который печатает дату и время, за которыми следует строка в журнале.

echo %DATE%_%TIME% Processing %%f >> process.log

Проблема заключается в том, что дата и время всегда являются датой и временем запуска script. Я запускаю script за одну ночь и все еще имею то же время и дату. Есть ли способ обновить их, чтобы они отображали текущую дату и время, когда строка печатается в файле журнала?

4b9b3361

Ответ 1

Тот факт, что у вас есть %%f, указывает, что ваша команда echo находится в цикле FOR. Весь цикл FOR анализируется сразу, а %DATE% расширяется во время разбора. Команда не повторно обрабатывается для каждой итерации, поэтому вы получаете одинаковое значение для каждой итерации. Вы получаете значение, существовавшее до выполнения оператора FOR!

Решение - это замедленное расширение. Поместите setlocal enableDelayedExpansion в верхней части вашего script. Затем используйте !DATE!_!TIME! вместо %DATE%_%TIME%. Отсроченное расширение означает, что расширение происходит, когда оператор выполняется, а не когда он разбирается. В системе HELP есть хорошее объяснение. Введите HELP SET или SET /? из командной строки и найдите раздел, который имеет дело с задержкой расширения.