首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除未使用的文件的Powershell脚本

删除未使用的文件的Powershell脚本
EN

Stack Overflow用户
提问于 2016-05-03 19:37:42
回答 2查看 506关注 0票数 0

我试图编写一个脚本来删除给定目录中的所有文件,但是我不想删除当前正在使用的文件(正在查看、编辑等)。我发现,对于某些文件类型(.docx、.xlsx等),工作正常,.ps1脚本如预期的那样失败并继续前进。但是,有些文件(.bmp、.txt)也可以打开并删除。看起来某些文件在使用时没有被锁定.我想我的问题是几个小问题:

  1. 是否有一种方法可以判断文件是否正在使用(除了查看文件是否已锁定)?
  2. 是否有明确的方法来判断哪些文件类型在使用时被锁定?
  3. 有比Remove-Item更好的cmdlet来实现我想要达到的目标吗?

提前感谢!

EN

回答 2

Stack Overflow用户

发布于 2016-05-03 19:56:40

一些应用程序(如Word )会锁定文件,读取它们以避免在打开时修改它(通常是为了防止您想在ex中修改它。Word)。其他应用程序,如notepad,则不然。

这并不是特定于文件类型(这只是一个与内部数据无关的GUI属性)。是应用程序决定是否要锁定文件。例如:

  • 在Word中打开docx文件:拒绝访问(正在使用的文件)
  • 在Wordpad中打开docx文件:成功(没有锁)

AFAIK不可能检测到ex正在使用的100%的文件。记事本不锁定文件。

删除文件的方法有很多种,但Remove-Item与其中任何一种方法一样好。

票数 0
EN

Stack Overflow用户

发布于 2016-05-03 20:14:50

补充一下弗罗德的观点,remove-item没有什么问题。普通的目录并不能给你提供太多信息。通过windows文件服务器托管的文件可以帮助您识别是否正在使用文件。如果可能,您可以实现一个智能逻辑,该逻辑排除正在使用的文件。

一般来说,我建议您的powershell脚本检查文件的LastAccessTime,例如,删除24小时未被访问的所有内容

代码语言:javascript
复制
Get-ChildItem -path c:\ps | Where-Object {$_.LastAccessTime -lt (get-date).addDays(-1)}

保护文件的极端方法是使用SCM,不要删除签出的任何内容。然而,对于普通用户来说,这不是一个友好的解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37012956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档