基于文件日期的ForFiles if语句

时间:2019-03-25 15:38:46

标签: windows batch-file command-line forfiles

我有一个通过SQL Server代理调用的批处理文件。

目前,我有:

ForFiles /p "C:\folder\subfolder" /d -7 /c "cmd /c del @file"

如果文件早于7天,该命令将正常工作。

如果没有符合条件的文件,则脚本将失败,从而导致SQL报告失败。

理想情况下,我需要添加if语句,如果存在的文件早于7天,则执行delete命令,否则忽略它。

有指导吗?

2 个答案:

答案 0 :(得分:1)

将其包装在xmle.Element("playlist").Elements("extrait") .Select(ex => new Extrait { Artiste = ex.Element("artiste").Value, Titre = ex.Element("titre").Value, PointA = 0, PointT = 0, PointAT = 0, JoueurA = ex.Element("JoueursAT").Elements("joueurAT").Select(jat => jat.Value).ToList(), JoueurT = ex.Element("JoueursA").Elements("joueurA").Select(ja => ja.Value).ToList(), JoueurAT = ex.Element("JoueursT").Elements("joueurT").Select(jt => jt.Value).ToList() }); 命令中,将标准错误重定向到NUL。

FOR /F

答案 1 :(得分:0)

尝试一下:

cd /d C:\folder\subfolder
SET _CmdResult=NONE
FOR /F "tokens=*" %%a IN ('forfiles -p "C:\folder\subfolder" -s -m *.* -d -7 -c "cmd /c del @file" 2^>^&1 ^| FINDSTR ERROR') DO SET _CmdResult=%%a
IF "%_CmdResult%" == "ERROR: No files found with the specified search criteria." ( 
    SET errorlevel=0 
 ) ELSE ( 
    SET errorlevel=1
 )
IF "%_CmdResult%" == "NONE" SET errorlevel=0

它会检查错误,并将错误放入变量中,然后如果发现错误级别,则将错误级别设置为零。