标题: [文件操作] 批处理如何定时删除当前文件夹下创建时间超过一个小时的文件? [打印本页]
作者: 511182890 时间: 2016-3-11 09:00 标题: 批处理如何定时删除当前文件夹下创建时间超过一个小时的文件?
现在需要做一个任务计划启动一个批处理,这个批处理的要求是:
删除当前文件夹下包含子文件夹中的所有创建时间已过60分钟的*.*文件
相当于这个文件夹中创建的文件我只保留60分钟,我就要把他删除。
作者: ivor 时间: 2016-3-11 11:05
本帖最后由 ivor 于 2016-3-11 11:56 编辑
回复 1# 511182890 - while (1)
- {
- dir * -Exclude *.ps1 -recurse | ?{$_.CreationTime -lt ((Get-date).addminutes(-60))} | del
- start-sleep -seconds 2
- }
复制代码
保存为xx.ps1
作者: Batcher 时间: 2023-2-15 14:19
回复 1# 511182890
test_1.bat- @echo off
- REM ------------------------------------------------------------------------------
- REM 如果显示的待删除文件列表正确无误
- REM 把 Select-Object FullName 修改成 Remove-Item -Force 再次执行即可真正删除文件
- REM Win7/Win10等系统自带PowerShell
- REM ------------------------------------------------------------------------------
-
- REM 指定待删除文件的存放路径
- set "SrcDir=C:\Test"
- REM 指定删除几小时之前创建的文件
- 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)) -lt '%OffsetNum%')} | Select-Object FullName"
-
- 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
因为文件夹也被选出来了,改成这样试试- 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://www.bathome.net/) |
Powered by Discuz! 7.2 |