Значение 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) оно должно было измениться. Это не изменилось - и я запускал его дюжину раз с января.

0 ответов

Другие вопросы по тегам