如何使用批处理文件删除 windows 10 中具有特定名称的文件?
How to delete files with specific names in windows 10 using batch file?
能否请你帮我一个批处理文件的命令来删除文件名称的文件。
我需要根据文件名删除超过 6 个月的文件。我需要在 Task scheduler 中安排脚本,所以它会根据文件名每天删除特定位置的文件,这些文件从当前日期起超过 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
这是 2013 年 Aacini's
post 的修改版本。我只是将其修改为使用 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 del "%%a_%%b_%%c_%%d" /Q
中删除 echo
您还需要在 if !daysOld! gtr 180 (
行中相应地设置您的日期
能否请你帮我一个批处理文件的命令来删除文件名称的文件。
我需要根据文件名删除超过 6 个月的文件。我需要在 Task scheduler 中安排脚本,所以它会根据文件名每天删除特定位置的文件,这些文件从当前日期起超过 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
这是 2013 年 Aacini's
post 的修改版本。我只是将其修改为使用 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 del "%%a_%%b_%%c_%%d" /Q
echo
您还需要在 if !daysOld! gtr 180 (