Powershell脚本删除旧文件
以下脚本将删除指定目录中超过14天的文件并写入.txt
并删除路径并删除文件(在另一个论坛上找到此脚本…信号为shay):
dir c:\tmp -recurse | where {!$_.PsIsContainer -AND $_.lastWriteTime -lt (Get-Date).AddDays(-14) } | select LastWriteTime,@{n="Path";e={convert-path $_.PSPath}} | tee c:\oldFiles.txt | Remove-Item -force -whatif
我有3个问题:
- 什么是
-lt
什么是-le
什么是-gt
? 我什么时候才能使用每一个 - 上面的脚本只删除文件…我怎么能删除文件夹?
- 上面的脚本基于
LastWriteTime
..那么CreatedDate
或LastAccessed
时间呢?
好的,我们走了:
-
-lt,-le和-gt是比较运算符。 lt表示小于,le表示小于或等于,gt表示大于。
-
如果您无法控制其中的内容,则删除文件夹会变得很危险。 您可能遇到问题,请注意数据丢失。 您可以使用相同的Remove-Item cmdlet删除文件夹,只需使用其选项即可。 查看这篇文章,它有关于如何实现它的很好的说明: http : //searchwindowsserver.techtarget.com/generic/0,295582,sid68_gci1275887,00.html
-
通常,对于已经在那里停留一段时间的文件,LastWriteTime和CreatedDate以及LastAccessTime将是相同的。 在只读文件中,如DLL,LastAccessTime可能比其他两个更新。 在读/写文件(如outlook的pst文件)中,WriteTime和AccessTime可能相同。 基本上,这完全取决于你。 它们的工作方式与LastWriteTime相同。 考虑要删除的文件的性质,然后继续!
-lt -le和-gt是比较运算符而不是<,<=,>。 在powershell命令提示符下键入“ help about_Comparison_Operators ”,以获取有关每种类型的详细信息以及使用这些类型的原因,而不是您熟悉的其他语言。
要删除文件夹,您还需要删除!$。PsIsContainer和 wherefilter的一部分。 这是从目录列表中删除所有项目。
我不确定你的问题是“关于CreatedDate或LastAccessed时间的问题”,但你可以像LastWriteTime一样使用这些属性,但是你需要决定你想要实现的逻辑。