[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

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

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

相当于这个文件夹中创建的文件我只保留60分钟,我就要把他删除。
1

评分人数

本帖最后由 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
1

评分人数

#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit

TOP

回复 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
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 3# Batcher


膜拜大佬,有需求路过搜到,虽然你写反了,但还是万分感谢。
顺便补充下方便其他人使用,lt改成gt就行。

TOP

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

TOP

回复 5# wufenghq


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

如果需要上传截图,可以找个图床,例如:
http://bbs.bathome.net/thread-60985-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 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]

TOP

回复 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"
复制代码

TOP

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

TOP

返回列表