关于#temp#的问题,如何解决?

img


如图所示,这个是某个应用的TEMP文件存放文件夹,由于这家单位的人很小气,让扩容申请了好几次都没批下来,所以导致这个文件夹需要定时清理,所以来求个解决方案。
这张图里面有两个文件名为日期的文件夹是固定要清除的,三个文件不能清除,我打算建个bat文件,搞个定时任务,但是苦于没有这方面的能力,看看有没有大手子能够接我的悬赏。
要求:能够提供定时删除图片中文件名称为日期的文件的bat文件代码


@echo off
setlocal enabledelayedexpansion

set rootDir=E:\测试目录
set logFile=delete_log.txt

for /d %%d in ("%rootDir%\*") do (
    set folderName=%%~nd
    set folderName=!folderName:~0,8!
    if "!folderName!" GTR "20000101" (
        rmdir /s /q "%%d"
        echo Folder "%%~nd" was deleted on %date% %time%. >> "%logFile%"
    )
)

echo Done. >> "%logFile%"

set rootDir=E:\测试目录

这里的目录改成你的目标目录,添加到计划任务即可,删除后还会有日志的 :)

py打包成exe 可以不

把dir替换成你的目录就可以了,新建脚本文件,文件后缀格式为bat


@echo off
setlocal enabledelayedexpansion

set "dir=C:\Users\Administrator\Desktop\test"
for /f "delims=" %%i in ('dir /b "%dir%"') do (
  set "name=%%~ni"
  if "!name:~0,8!"=="!name:~0,8!" (
    echo Deleting: %%i
    rd /q /s "%dir%\%%i"
  )
)

我们官方可以提供,这边只有一个文件,你的日期格式设置的时候得固定,这是正确的代码,楼下的所有代码或多或少都存在问题,我这里指定了具体年份,早于年份的文件夹也不会被删除

img

img

@echo off
setlocal enabledelayedexpansion

set "dir=C:\Users\administrator.AB\Desktop\test"
for /f "delims=" %%i in ('dir /b "%dir%"') do (
  set "name=%%~ni"
  if "!name:~0,8!"=="!name!" (
    set "date=!name:~0,4!!name:~4,2!!name:~6,2!"
    if "!date!" geq "20000101" (
      echo Deleting: %%i
      rd /q /s "%dir%\%%i"
    )
  )
)


@echo off

set "path_to_delete=C:\Temp"  // 要删除的文件路径
set "file_extension=.log"    // 要删除的文件扩展名
set "days_to_keep=7"         // 保留的天数

rem 计算要删除的文件的最后修改时间
set "timestamp=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%"
set /a "timestamp -= %days_to_keep%"
set "timestamp=%timestamp:~0,4%-%timestamp:~4,2%-%timestamp:~6,2% %timestamp:~8,2%:%timestamp:~10,2%:%timestamp:~12,2%"

rem 删除指定路径下指定扩展名的文件
forfiles /p "%path_to_delete%" /s /m "*%file_extension%" /c "cmd /c if @isdir==FALSE if @fdate<='%timestamp%' del @path"

例子参考
@echo off
set "targetFolder=C:\Users\YourUserName\Pictures"
set "fileNameFormat=YYYYMMDD"
set "currentDate=%date:6,4%%date:3,2%%date:0,2%"
for /f "delims=" %%i in ('dir /b "%targetFolder%"') do (
set "fileName=%%
ni"
setlocal enabledelayedexpansion
if "!fileName!"=="!currentDate!" (
del "%targetFolder%%%i"
)
endlocal
)