我试图编写一个脚本来删除给定目录中的所有文件,但是我不想删除当前正在使用的文件(正在查看、编辑等)。我发现,对于某些文件类型(.docx、.xlsx等),工作正常,.ps1脚本如预期的那样失败并继续前进。但是,有些文件(.bmp、.txt)也可以打开并删除。看起来某些文件在使用时没有被锁定.我想我的问题是几个小问题:
Remove-Item更好的cmdlet来实现我想要达到的目标吗?提前感谢!
发布于 2016-05-03 19:56:40
一些应用程序(如Word )会锁定文件,读取它们以避免在打开时修改它(通常是为了防止您想在ex中修改它。Word)。其他应用程序,如notepad,则不然。
这并不是特定于文件类型(这只是一个与内部数据无关的GUI属性)。是应用程序决定是否要锁定文件。例如:
AFAIK不可能检测到ex正在使用的100%的文件。记事本不锁定文件。
删除文件的方法有很多种,但Remove-Item与其中任何一种方法一样好。
发布于 2016-05-03 20:14:50
补充一下弗罗德的观点,remove-item没有什么问题。普通的目录并不能给你提供太多信息。通过windows文件服务器托管的文件可以帮助您识别是否正在使用文件。如果可能,您可以实现一个智能逻辑,该逻辑排除正在使用的文件。
一般来说,我建议您的powershell脚本检查文件的LastAccessTime,例如,删除24小时未被访问的所有内容
Get-ChildItem -path c:\ps | Where-Object {$_.LastAccessTime -lt (get-date).addDays(-1)}保护文件的极端方法是使用SCM,不要删除签出的任何内容。然而,对于普通用户来说,这不是一个友好的解决方案。
https://stackoverflow.com/questions/37012956
复制相似问题