用于删除 X 天之前的文件的批处理脚本(基于创建日期,而不是修改日期)

问题描述 投票:0回答:4

在 Windows 计算机(win 7 或 Win server 2008 R2)上,我有一个批处理脚本,可将一些 .config 文件复制到备份文件夹。
我想编写另一个脚本来删除一周前创建的备份文件。

有很多关于如何使用的建议

FORFILES
(例如):

FORFILES /P "D:\Configs_Backup" /M *.config /D -7 /C "cmd /c del @file"

但是这个命令使用“修改”时间戳,而我需要使用创建日期。

在不安装任何第三方程序的情况下,是否可以通过命令控制台来实现这一点?

windows batch-file scheduled-tasks
4个回答
5
投票

尝试这个,查看输出并删除

echo
,如果它看起来不错:

@ECHO OFF &SETLOCAL ENABLEDELAYEDEXPANSION
SET /a XDay=7
CALL :DateToJDN "%DATE%" JDNToday
FOR /r "D:\Configs_Backup" %%a IN (*.config) DO (
    FOR /f "tokens=1,4*" %%b IN ('dir /tc "%%~a"^|findstr "^[0-9]"') DO (
        CALL :DateToJDN "%%b" filedate
        SET /a diffdays=JDNToday-filedate
        IF !diffdays! gtr %XDay% ECHO DEL /F /Q "%%~a"
        )
    )
GOTO :eof

:DateToJDN "DD mm/dd/yyyy" jdn=
setlocal
set date=%~1
set /A yy=%date:~-4%, mm=1%date:~-10,2% %% 100, dd=1%date:~-7,2% %% 100
set /A a=mm-14, jdn=(1461*(yy+4800+a/12))/4+(367*(mm-2-12*(a/12)))/12-(3*((yy+4900+a/12)/100))/4+dd-32075
endlocal & set %2=%jdn%
exit /B

注意:这只适用于

AM/PM
时间格式。


2
投票

看看这是否有帮助 - 保留 5 个 *.config 文件 (skip=5) 以及最近的创建日期
在示例文件上进行测试。

@echo off
pushd "d:\folder"
   del file2.tmp 2>nul
   for /f "delims=" %%a in ('dir *.config /b /a-d ') do call :getcreationdate "%%~fa"
   sort /r <file2.tmp >file.tmp
   for /f "skip=5 tokens=1,*" %%a in (file.tmp) do del "%%~b"
   del file.tmp file2.tmp 
popd
pause
goto :EOF

 :getcreationdate
 set "file=%~1"
 set "file=%file:\=\\%"
 WMIC DATAFILE WHERE name="%file%" get creationdate | find "." >file.tmp
 for /f %%b in (file.tmp) do set dt=%%b
 set dt=%dt:~0,8%_%dt:~8,6%
 del file.tmp
 >>file2.tmp echo %dt% "%~1"

1
投票

我知道这是一篇旧帖子,但我偶然发现了它,它很有帮助。我最终选择了 @Gray 作为评论暗示的路线,并将我的 .bat 复制脚本更改为此,以便在复制时更新修改日期,而不是尝试在清理脚本中解决它。

copy %1 %2 /y
copy /b %2+,, %2

https://superuser.com/questions/10426/windows-equivalent-of-the-linux-command-touch


0
投票

使用“Forfiles”dos 命令来跟踪 n 天创建的文件。 对于前。使用以下命令

Forfiles -p "C:\Work Data\Len's Files\Data\Quicken\BACKUP" -s -m *.QDF-backup /D "-14" /C "cmd /c del /q @path"

© www.soinside.com 2019 - 2024. All rights reserved.