首页 > 解决方案 > 接受 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% 的新结束值,但它将以 Echo %DateTimeCode% 开始,产生“190122_190410”。

SyncBack 正在使用该过时的值来创建目录。

感觉很像上下文/配置文件问题,只是两个 Echo 语句在相同的配置文件和上下文中;它们的区别仅在于它们存在于批处理文件中的位置。这是一个输出示例:

日期时间代码=190122_190410

成功:指定的值已保存。

成功:指定的值已保存。

成功:指定的值已保存。

日期时间代码=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 需要在参数之间有一个空格。)

谁能帮我发现我的错误的来源?

编辑:人们似乎不明白这里的真正意义。变量 REVERTS 每次都恢复为去年 1 月存储的值。我不在乎批处理文件运行期间的值是什么,但是下次我运行它时(在新的 Cmd 窗口中)它应该已经改变了。它没有改变——自一月份以来我已经运行了十几次。

标签: batch-filesetsetx

解决方案


推荐阅读