我试图比较一个文件的创builddate到今天的date,并有一个工作的解决scheme:
FOR %%f IN (%ARCHIVE_FILE%) DO SET FileDate=%%~tf IF [%FileDate:~0,-6%] == [%CURRENT_DATE%] goto finish
由于某种原因,在Windows机器上部署这个批处理脚本的时候(两台不同的Windows机器上),FileDatevariables被设置为预期的结果,例如“dd / mm / yy mm:ss” ,然后重置为空。
把:
echo %FileDate% pause
在两行之间显示FileDate被正确分配,然后直接分配给“”。 我无法find答案,并想知道是否有一些稀有的大师们可能对某些事情有所了解:/。
将参数从Windows批处理脚本传递到PowerShell脚本
如何在没有访问registry的情况下仅返回环境variables中的用户path?
在哪里设置path
C Linux stat()以nsec精度获取atime / mtime
谢谢你的帮助。
编辑:
移动到forfiles解决scheme,我将添加任何人寻找替代:
forfiles /p %ARCHIVE_DIR% /m %FILE_NAME% /d 0 && ( goto finish ) || ( goto start )
这应该就够了,我还没有在我需要的机器上检查它。
找出上述初始解决scheme为什么会失败,这还是很好的,哈哈。
使用Chef确保在Windows上删除用户环境variables,但不是系统variables
从Windows获取环境variables
哪些操作系统/平台实现等待变形优化?
在shell脚本中设置环境variables以在远程服务器上运行
在Windows上通过node.js执行git cmd失败,出错
我想你的代码和你发布的那个部分是不一样的。
这些类型的问题通常出现在由括号包围的命令块中。
这是批解析器的扩展阶段的一个问题,因为在执行块之前会发生百分比扩展。
所以你应该切换到延迟扩展
setlocal EnableDelayedExpansion FOR %%f IN (%ARCHIVE_FILE%) DO ( SET "FileDate=%%~tf" echo Doesn't work %FileDate% echo But this works !FileDate! IF "!FileDate:~0,-6!" == "%CURRENT_DATE%" goto finish ) :finish
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。