找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 33244|回复: 8

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

[复制链接]
发表于 2016-3-11 09:00:26 | 显示全部楼层 |阅读模式
现在需要做一个任务计划启动一个批处理,这个批处理的要求是:

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

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

评分

参与人数 1PB -4 收起 理由
pcl_test -4 勿发笼统的标题

查看全部评分

发表于 2016-3-11 11:05:43 | 显示全部楼层
本帖最后由 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技术 +1 收起 理由
CrLf + 1 666

查看全部评分

发表于 2023-2-15 14:19:55 | 显示全部楼层
回复 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
复制代码
发表于 2023-4-14 16:24:29 | 显示全部楼层
回复 3# Batcher


膜拜大佬,有需求路过搜到,虽然你写反了,但还是万分感谢。
顺便补充下方便其他人使用,lt改成gt就行。
发表于 2023-4-15 05:18:12 | 显示全部楼层
回复 3# Batcher
请教下大佬,我在使用过程中发现子文件里他无法自动继续执行,每次总要手动确认如何,文件夹一多的话这个批处理等于没用了,请问怎样改才能让子文件夹也一样生效执行大于创建时间就删除
发表于 2023-4-15 09:11:18 | 显示全部楼层
回复 5# wufenghq


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

如果需要上传截图,可以找个图床,例如:
http://bbs.bathome.net/thread-60985-1-1.html
发表于 2023-4-15 17:15:52 | 显示全部楼层
本帖最后由 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]
发表于 2023-4-15 17:30:37 | 显示全部楼层
回复 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"
复制代码
发表于 2023-4-15 17:38:36 | 显示全部楼层
回复 8# buyiyang
目前测试十分完美,感谢大佬
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 22:45 , Processed in 0.020716 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表