我的目标是将要创建的目录路径传递给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窗口中)时,它应该已经更改了。它没有改变-自一月以来,我已经运行了十二次。