powershell - 使用 PowerShell 递归删除文件

标签 powershell windows-server-2008

我需要根据他们的 上次访问 时间删除所有文件(递归地在所有文件夹和子文件夹中)。

我正在查看建议这个答案的 Stack Overflow 帖子 Batch file to delete files older than N days:

forfiles -p "C:\what\ever" -s -m *.* -d <number of days> -c "cmd /c del @path"

但是,这会根据上次修改时间而不是上次访问时间删除文件。

另外,有没有办法将命令保存在脚本文件中,这样我就可以双击它来运行?

最佳答案

使用 Get-ChildItem -recurse 获取所有文件,然后您可以将它们通过管道传输到 where-object commandlet 以过滤掉目录并使用 LastAccessTime 属性根据该属性进行过滤。然后将结果通过管道传送到执行删除命令的 foreach 对象。

它最终看起来像这样。请注意 Get-Date 的使用,要获取自年初以来更新的所有文件,请替换为您自己的日期:

get-childitem C:\what\ever -recurse | where-object {-not $_.PSIsContainer -and ($_.LastAccessTime -gt (get-date "1/1/2012"))} | foreach-object { del $_ }

或者使用一些常见的别名来缩短一切:
dir C:\what\ever -recurse | ? {-not $_.PSIsContainer -and ($_.LastAccessTime -gt (get-date "1/1/2012"))} | % { del $_ }

关于powershell - 使用 PowerShell 递归删除文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12378714/

相关文章:

php - Windows 2008 IIS 上 MySql 数据库的 Plesk 密码

c# - 自定义 PowerShell 管理单元 : custom format doesn't work

rest - Invoke-RestMethod - 忽略自签名证书

java - 使用计划任务时出现文件未找到错误

powershell - Get-WindowsFeature 的替代方案

localhost - MSMQ - 资源不足,无法执行操作

powershell - 从 powershell 将变量传递给 7zip

powershell - 在 PowerShell 中复制文件并将日期添加到其名称

arrays - 将目录文件夹名称存储到阵列 Powershell

iis - 如何使用命令行在防火墙中启用 "World Wide Services (HTTP)"?