batch-file - 如果文件早于 X 天 -> 运行命令 - CMD
问题描述
我正在为在各种 Windows Server 版本上运行的 DriveSnapshot 编写脚本。如果文件夹中有超过 6 天的文件,我想运行特定的批处理文件(完整备份)。如果没有此类文件 -> 运行差异备份。
我试过:
ForFiles /p "path\to\folder" /d -6 /c "cmd /c set var=1"
if %var% == 1 (
fullbackup.bat
) else (
diffbackup.bat
)
但似乎你不能只在ForFiles
.
似乎该变量永远不会被赋予正确的值。
Microsoft Docs 页面ForFiles
内容如下:
对每个文件运行指定的命令。命令字符串应该用引号引起来。*
我知道我的命令set var=1
适用于它找到的每个文件,但应该仍然有效,对吧?
如果有更好的方法来解决这个问题,请赐教...
解决方案
改为使用errorlevel
当前脚本在脚本环境之外设置变量,并且它永远不会被传递回父脚本。
ForFiles /p "z:\work" /d -100 /c "cmd /c">nul 2>&1
if errorlevel 1 call diffbackup.bat else call fullbackup.bat
推荐阅读
- html - 将 iframe 视频拉伸超过最大屏幕宽度,找不到隐藏溢出的方法
- java - 如何根据键从MongoDb中的嵌套json中获取数据列表?
- html - 移动版网站时将菜单项移至底部
- r - 如何修复“$ 运算符对原子向量无效”/正确加载数据集?
- angularjs - 如何使用 ng-click AngularJS 直接更新字段
- node.js - 返回html时获取双引号
- codeigniter - 添加 database.sql /docker-entrypoint-initdb.d/database.sql
- apache-kafka - 如何实现幂等KafkaProducer的回退?
- git - 在重构期间拆分文件时跟踪文件与 git 一起移动
- python - 如何在“matplotlib”中只找到波中的大峰