Board logo

标题: [文件操作] 批处理如何定时删除当前文件夹下创建时间超过一个小时的文件? [打印本页]

作者: 511182890    时间: 2016-3-11 09:00     标题: 批处理如何定时删除当前文件夹下创建时间超过一个小时的文件?

现在需要做一个任务计划启动一个批处理,这个批处理的要求是:

删除当前文件夹下包含子文件夹中的所有创建时间已过60分钟的*.*文件

相当于这个文件夹中创建的文件我只保留60分钟,我就要把他删除。
作者: ivor    时间: 2016-3-11 11:05

本帖最后由 ivor 于 2016-3-11 11:56 编辑

回复 1# 511182890
  1. while (1)
  2. {
  3. dir * -Exclude *.ps1 -recurse | ?{$_.CreationTime -lt ((Get-date).addminutes(-60))} | del
  4. start-sleep -seconds 2
  5. }
复制代码
保存为xx.ps1
作者: Batcher    时间: 2023-2-15 14:19

回复 1# 511182890


test_1.bat
  1. @echo off
  2. REM ------------------------------------------------------------------------------
  3. REM 如果显示的待删除文件列表正确无误
  4. REM 把 Select-Object FullName 修改成 Remove-Item -Force 再次执行即可真正删除文件
  5. REM Win7/Win10等系统自带PowerShell
  6. REM ------------------------------------------------------------------------------
  7. REM 指定待删除文件的存放路径
  8. set "SrcDir=C:\Test"
  9. REM 指定删除几小时之前创建的文件
  10. set "OffsetNum=1"
  11. powershell -c "Get-ChildItem -Path '%SrcDir%' -Recurse -ErrorAction:SilentlyContinue | Where-Object -FilterScript {( ((Get-Date -UFormat '%%s')/(60*60) - (Get-Date $_.CreationTime -UFormat '%%s')/(60*60)) -lt '%OffsetNum%')} | Select-Object FullName"
  12. pause
复制代码

作者: wufenghq    时间: 2023-4-14 16:24

回复 3# Batcher


膜拜大佬,有需求路过搜到,虽然你写反了,但还是万分感谢。
顺便补充下方便其他人使用,lt改成gt就行。
作者: wufenghq    时间: 2023-4-15 05:18

回复 3# Batcher
请教下大佬,我在使用过程中发现子文件里他无法自动继续执行,每次总要手动确认如何,文件夹一多的话这个批处理等于没用了,请问怎样改才能让子文件夹也一样生效执行大于创建时间就删除
作者: Batcher    时间: 2023-4-15 09:11

回复 5# wufenghq


请把你的完整代码和执行截图发出来看看。

如果需要上传截图,可以找个图床,例如:
http://bbs.bathome.net/thread-60985-1-1.html
作者: wufenghq    时间: 2023-4-15 17:15

本帖最后由 wufenghq 于 2023-4-15 17:33 编辑

回复 6# Batcher


@echo off
REM ------------------------------------------------------------------------------
REM 如果显示的待删除文件列表正确无误
REM 把 Select-Object FullName 修改成 Remove-Item -Force 再次执行即可真正删除文件
REM Win7/Win10等系统自带PowerShell
REM ------------------------------------------------------------------------------

REM 指定待删除文件的存放路径
set "SrcDir=D:\360安全浏览器下载\测试\测试1 - 副本"
REM 指定删除几小时之前创建的文件24*5
set "OffsetNum=1"

powershell -c "Get-ChildItem -Path '%SrcDir%' -Recurse -ErrorAction:SilentlyContinue | Where-Object -FilterScript {( ((Get-Date -UFormat '%%s')/(60*60) - (Get-Date $_.CreationTime -UFormat '%%s')/(60*60)) -gt '%OffsetNum%')} | Remove-Item -Force"

pause
如图,确定后他会把所有子文件夹全删了,哪怕子文件里有小于1小时以内的文件。
[img][/img]
[img][/img]

作者: buyiyang    时间: 2023-4-15 17:30

回复 7# wufenghq


    因为文件夹也被选出来了,改成这样试试
  1. powershell -c "Get-ChildItem -Path '%SrcDir%' -Recurse -ErrorAction:SilentlyContinue | Where-Object -FilterScript {(( ((Get-Date -UFormat '%%s')/(60*60) - (Get-Date $_.CreationTime -UFormat '%%s')/(60*60)) -gt '%OffsetNum%')) -and ($_ -is [System.IO.FileInfo])} | Remove-Item -Force"
复制代码

作者: wufenghq    时间: 2023-4-15 17:38

回复 8# buyiyang
目前测试十分完美,感谢大佬




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2