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