你能帮我一个批处理文件的命令来删除带有文件名的文件吗?
我需要根据文件名删除超过 6 个月的文件。我需要在任务调度程序中调度脚本,因此它会根据文件名每天删除特定位置的文件,这些文件从当前日期起超过 6 个月。
文件位置:
K:\Bck
文件名:
Backup_2020-10-22.txt
Backup_2020-10-21.txt
Backup_2019-09-16.txt
Backup_2018-05-17.txt
Backup_2017-04-16.txt
这是Aacini's
帖子的修改版本,从 2013 年开始。我只是修改它以用于powershell
获取今天的日期,而不是使用特定于语言环境的%date%
变量和一些更改来适应您的环境。所以我不相信这一切。
@echo off
setlocal EnableDelayedExpansion
pushd "K:\Bck"
for /f "tokens=*" %%i in ('PowerShell -Command "& {Get-Date -format 'yyyyMMdd'}"') do set todayDate=%%i
call :DateToJDN %todayDate% todayJDN=
for /F "tokens=1-4* delims=_-" %%a in ('dir /B /A-D "Backup_*-*-*.txt"') do (
call :DateToJDN %%b%%c%%~nd fileJDN=
set /A daysOld=todayJDN - fileJDN
if !daysOld! gtr 180 (
echo File "%%a_%%b-%%c-%%d" is !daysOld! days old
del "%%a_%%b-%%c-%%d" /Q
)
)
popd
goto :eof
:DateToJDN yyyymmdd jdn=
set yyyymmdd=%1
set /A yyyy=%yyyymmdd:~0,4%, mm=1%yyyymmdd:~4,2% %% 100, dd=1%yyyymmdd:~6% %% 100
set /A a=(mm-14)/12, %2=(1461*(yyyy+4800+a))/4+(367*(mm-2-12*a))/12-(3*((yyyy+4900+a)/100))/4+dd-32075
exit /B
这还不会删除任何内容。它只会将命令回显到屏幕上。如果您确定echo
'd 结果与您想要的相似,您可以echo
从行中删除echo del "%%a_%%b_%%c_%%d" /Q
您还需要在行中相应地设置您的日子 if !daysOld! gtr 180 (
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句