Setx值已接受,但并未真正改变

时间:2019-03-01 16:30:44

标签: batch-file set setx

我的目标是将要创建的目录路径传递给SyncBack(专业版),该目录路径的名称中包含“ 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%的新结束值,但是它将以回声%DateTimeCode%产生“ 190122_190410”。

并且SyncBack使用该过时的值创建目录。

非常类似于上下文/配置文件问题,不同之处在于两个Echo语句位于相同的配置文件和上下文中;它们仅在批处理文件中存在的地方不同。这是输出示例:

  

DateTimeCode = 190122_190410

     

成功:指定的值已保存。

     

成功:指定的值已保存。

     

成功:指定的值已保存。

     

DateTimeCode = 190301_111443

     

按任意键继续。 。

也许与this question有关,但重复的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需要在参数之间留一个空格。)

有人可以帮助我发现我的错误的根源吗?

编辑:人们似乎并不了解这里的真正意义。变量REVERTS等于去年1月EVERY TIME存储的值。我不在乎在批处理文件运行期间 的值是什么,但是下次我运行它(在新的Cmd窗口中)时,它应该已经更改了。它没有改变-自一月以来,我已经运行了十二次。

0 个答案:

没有答案