首页 > 解决方案 > 如果文件早于 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适用于它找到的每个文件,但应该仍然有效,对吧?

如果有更好的方法来解决这个问题,请赐教...

标签: batch-filecmdforfiles

解决方案


改为使用errorlevel当前脚本在脚本环境之外设置变量,并且它永远不会被传递回父脚本。

ForFiles /p "z:\work" /d -100 /c "cmd /c">nul 2>&1
if errorlevel 1 call diffbackup.bat else call fullbackup.bat

推荐阅读