batch-file - 接受 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 窗口中)它应该已经改变了。它没有改变——自一月份以来我已经运行了十几次。
解决方案
推荐阅读
- mysql - 使用存储过程在商店捆绑系统中一一选择多行(重复直到一定数量)
- mysql - Laravel - 雄辩的查询没有给出预期的结果
- javascript - 自动化 SAPUI5 应用程序 - 是否可以使用其 API?
- android - '如何使用带有“Content-Type”的 Volley 发送 Post 请求:“application/x-www-form-urlencoded”
- python - 在views.py中处理的字段上的非空约束错误
- android - Exo 播放器有时在 android 中花费太多时间开始播放音频
- php - EverNote API findNotesMetadata 不会返回每个带有过滤器创建时间的笔记
- javascript - pac 文件 SyntaxError: Unexpected number 问题
- vector - 在 Rust 中迭代向量时何时使用引用?
- bash - shell如何删除具有几乎相同名称对的列表模式的第一个文件/文件夹