意外的Windows批处理行为 – 赋值后variables重置 – 在FILE和SET中使用FOR%f获取文件date

意外的Windows批处理行为 – 赋值后variables重置 – 在FILE和SET中使用FOR%f获取文件date,第1张

概述意外的Windows批处理行为 – 赋值后variables重置 – 在FILE和SET中使用FOR%f获取文件date

我试图比较一个文件的创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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1270440.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存