我试图比较一个文件的创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?
windows:获取和存储variables中的机器名称
在哪里设置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
总结以上是内存溢出为你收集整理的意外的Windows批处理行为 – 赋值后variables重置 – 在FILE和SET中使用FOR%f获取文件date全部内容,希望文章能够帮你解决意外的Windows批处理行为 – 赋值后variables重置 – 在FILE和SET中使用FOR%f获取文件date所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)