Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 如果文件早于X天->;运行命令--CMD_Batch File_Cmd_Forfiles - Fatal编程技术网

Batch file 如果文件早于X天->;运行命令--CMD

Batch file 如果文件早于X天->;运行命令--CMD,batch-file,cmd,forfiles,Batch File,Cmd,Forfiles,我正在为在各种Windows Server版本上运行的DriveSnapshot编写脚本。 如果文件夹中有超过6天的文件,我想运行特定的批处理文件(fullbackup)。 如果没有这样的文件->运行差异备份 我试过: ForFiles /p "path\to\folder" /d -6 /c "cmd /c set var=1" if %var% == 1 ( fullbackup.bat ) else ( diffbackup.bat ) 但是,似乎您不能在for files中

我正在为在各种Windows Server版本上运行的DriveSnapshot编写脚本。 如果文件夹中有超过6天的文件,我想运行特定的批处理文件(fullbackup)。 如果没有这样的文件->运行差异备份

我试过:

ForFiles /p "path\to\folder" /d -6 /c "cmd /c set var=1"
if %var% == 1 (
   fullbackup.bat
) else (
   diffbackup.bat
)
但是,似乎您不能在
for files
中运行任何命令

似乎变量从未被赋予正确的值

文件的Microsoft文档页面如下所示:

对每个文件运行指定的命令。命令字符串应该用引号括起来*

我知道我的命令会为它找到的每个文件
设置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

/C
开关后面的命令行没有在主机中运行,实际上您甚至正在显式地创建一个新命令行(通过
cmd/C

但有一种更简单的方法,即使用
for files
的退出代码以及:

forfiles/P“D:\path\to\folder”/D-6>num2>&1&&(
“D:\path\to\fullbackup.bat”
) || (
“D:\path\to\diffbackup.bat”
)
通常我建议使用从批处理文件运行另一个批处理文件,但在本例中,我故意跳过了它,因为
调用“fullbackup.bat”
可能会返回批处理文件本身的退出代码,该代码可能会被
|
无意中识别

如果您确实需要在有以下其他命令时使用
调用
,我将使用此命令:

forfiles/P“D:\path\to\folder”/D-6>num2>&1&&(
调用“D:\path\to\fullbackup.bat”&转到:下一步
) || (
调用“D:\path\to\diffbackup.bat”
)
:下一个

请注意,
forfiles
也会迭代目录,而不仅仅是文件。

谢谢!这是我想要的。最后一行:ATM文件夹中要么只有一个文件,要么什么都没有,所以它现在可以工作了。如果是这样,我会对每个子文件夹运行多个检查。谢谢!这种方法同样有效。同时也感谢您将我的问题格式化;)