如何使用批处理文件在Windows 10中删除具有特定名称的文件?

问题描述

能否请您帮我提供一个批处理文件命令,以删除带有文件名的文件

我需要根据文件删除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的结果与您想要的结果相似,则可以从echo行中删除echo del "%%a_%%b_%%c_%%d" /Q

您还需要相应地在if !daysOld! gtr 180 (行中设置您的日子