Значение Setx принято, но не изменилось
Моя цель - передать в SyncBack (Pro-версию) путь к каталогу, который содержит текущую дату и время в своем имени, как "D:\YYMMDD_hhmmss".
Следующий пакетный файл хранит переменную с именем DateTimeCode с отформатированной строкой, сообщает об успешном сохранении переменной и затем возвращает версию переменной, которой исполнился месяц.
@ Echo OFF
Echo DateTimeCode=%DateTimeCode%
Set DateCode=%Date:~-2,2%%Date:~-10,2%%Date:~-7,2%
Set TimeCode=%Time:~0,2%%Time:~3,2%%Time:~6,2%
Setx DateTimeCode %DateCode%_%TimeCode%
Echo DateTimeCode=%DateTimeCode%
Pause
Я думал, что эта проблема была только в SyncBack, но когда я запускаю пакетный файл независимо, он получает тот же результат. Похоже, что он работает, но каждый раз, когда он запускается, он повторяет одно и то же время ("190122_190410") - он не меняется в начале, даже если он меняется в конце. В следующий раз: новое конечное значение для%DateTimeCode%, но оно начнется с Echo %DateTimeCode%, выдающего "190122_190410".
И SyncBack использует это устаревшее значение для создания каталога.
Очень похоже на проблему контекста / профиля, за исключением того, что два оператора Echo находятся в одном профиле и контексте; они отличаются только тем, где в пакетном файле они существуют. Вот пример вывода:
DateTimeCode = 190122_190410
УСПЕХ: Указанное значение было сохранено.
УСПЕХ: Указанное значение было сохранено.
УСПЕХ: Указанное значение было сохранено.
DateTimeCode = 190301_111443
Нажмите любую клавишу для продолжения.,,
Возможно, связанный с этим вопросом, за исключением того, что дублирующие операторы Set/Setx не решили мою проблему:
@ Echo OFF
Echo DateTimeCode=%DateTimeCode%
Set DateCode=%Date:~-2,2%%Date:~-10,2%%Date:~-7,2%
Set TimeCode=%Time:~0,2%%Time:~3,2%%Time:~6,2%
Set DateTimeCode=%DateCode%_%TimeCode%
Setx DateCode %Date:~-2,2%%Date:~-10,2%%Date:~-7,2%
Setx TimeCode %Time:~0,2%%Time:~3,2%%Time:~6,2%
Setx DateTimeCode %DateCode%_%TimeCode%
Echo DateTimeCode=%DateTimeCode%
Pause
(Обратите внимание, что Set требует знака равенства, а Setx требует пробела между аргументами.)
Может ли кто-нибудь помочь мне раскрыть источник моей ошибки?
РЕДАКТИРОВАТЬ: Люди, кажется, не понимают реальную точку зрения здесь. Переменная ОБРАТИТСЯ к значению, сохраненному в прошлом январе, КАЖДЫЙ РАЗ. Мне все равно, какое значение имеет значение при запуске Batch-файла, но к следующему запуску (в новом окне Cmd) оно должно было измениться. Это не изменилось - и я запускал его дюжину раз с января.