【问题标题】:Deleting files and folder older than 3 days via batch file通过批处理文件删除超过 3 天的文件和文件夹
【发布时间】:2017-05-26 22:25:35
【问题描述】:

我正在尝试编写一个批处理脚本来删除数据超过 3 天的文件和文件夹。但是文件夹内有文件,一旦文件被删除,文件夹最后修改的数据会更改为今天,这导致文件夹不会被删除。

我的脚本有 3 个不同的文件:

1。由路径和时间组成的属性文件

path_3=D:\Scripts\DeleteLogsScripts\test,3

2。批处理文件读取路径和时间并将它们作为变量发送到另一个批处理文件

setlocal enabledelayedexpansion
for /F "tokens=1,2,3 delims==," %%G IN (data.properties) DO (
@echo %%G %%H %%I
set local_path=%%H
set local_time=%%I
call backup_filecheck1.bat !local_path! !local_time!
)

3。批处理文件删除文件

set local_path=%1
echo %local_path%
set local_time=%2
Forfiles /P "%local_path%" /S /D -%local_time% /C "Cmd /C If @isdir==FALSE Del @Path"
Forfiles /p "%local_path%" /S /C "Cmd /C If @isdir==TRUE RD /s /q @Path 2>Nul"

要删除的文件夹:

如您所见,文件夹的最后修改日期更改为今天。

我不明白如何解决这个问题。

【问题讨论】:

    标签: batch-file


    【解决方案1】:

    我终于想通了。我更新了脚本,在删除文件后,它会对文件进行排序并删除空文件夹

    set local_path=%1 echo %local_path% set local_time=%2 Forfiles /P "%local_path%" /S /D -%local_time% /C "Cmd /C If @isdir==FALSE Del @Path" cd /D %local_path%\%%a for /f "delims=" %%i in ('dir /s /b /ad ^| sort /r') do rd "%%i">NUL

    【讨论】:

      猜你喜欢
      • 2010-09-08
      • 1970-01-01
      • 1970-01-01
      • 2015-10-19
      • 1970-01-01
      • 2012-11-11
      • 1970-01-01
      • 1970-01-01
      • 2012-07-16
      相关资源
      最近更新 更多