Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PowerShell删除脚本,用于查看文件夹时间戳而不是文件_Powershell - Fatal编程技术网

PowerShell删除脚本,用于查看文件夹时间戳而不是文件

PowerShell删除脚本,用于查看文件夹时间戳而不是文件,powershell,Powershell,我有一个脚本,可以自动删除超过x天的文件 $dump_path = "C:\Backup\GroupPolicies" $max_days = "-7" $curr_date = Get-Date $del_date = $curr_date.AddDays($max_days) Get-ChildItem $dump_path -Recurse | Where-Object { $_.LastWriteTime -lt $del_date } | Remove-Item -Recurse -F

我有一个脚本,可以自动删除超过x天的文件

$dump_path = "C:\Backup\GroupPolicies"
$max_days = "-7"
$curr_date = Get-Date
$del_date = $curr_date.AddDays($max_days)
Get-ChildItem $dump_path -Recurse | Where-Object { $_.LastWriteTime -lt $del_date } | Remove-Item -Recurse -Force

但是,我希望它查找文件夹时间戳,而不是文件时间戳。有这样的方法吗?我到处都搜索过,但我看到的都是文件时间戳。

如果您仅限于PowerShell 2.0,您可以这样做,尽管效率有点低

Get-ChildItem $dump_path -Recurse | 
    Where-Object {$_.PSIsContainer -and $_.LastWriteTime -lt $del_date } | 
    Get-ChildItem -Recurse | 
    Remove-Item -Recurse -Confirm:$False -Force -WhatIf
获取与日期条件匹配的所有文件夹。然后为每个文件夹获取所有子项。这可能包括更多的文件夹。因此,如果您的层次结构很复杂,那么这将崩溃,需要更复杂的逻辑

使用
-WhatIf
确保代码隔离了您想要的文件


如果PowerShell至少为3.0,则可以使用
Get ChildItem的
-Directory
开关参数

Get-ChildItem $dump_path -Recurse -Directory | 
    Where-Object {$_.LastWriteTime -lt $del_date } | 
    Get-ChildItem -Recurse | 
    Remove-Item -Recurse -Confirm:$False -Force -WhatIf

如果您仅限于PowerShell 2.0,您可以这样做,尽管这有点低效

Get-ChildItem $dump_path -Recurse | 
    Where-Object {$_.PSIsContainer -and $_.LastWriteTime -lt $del_date } | 
    Get-ChildItem -Recurse | 
    Remove-Item -Recurse -Confirm:$False -Force -WhatIf
获取与日期条件匹配的所有文件夹。然后为每个文件夹获取所有子项。这可能包括更多的文件夹。因此,如果您的层次结构很复杂,那么这将崩溃,需要更复杂的逻辑

使用
-WhatIf
确保代码隔离了您想要的文件


如果PowerShell至少为3.0,则可以使用
Get ChildItem的
-Directory
开关参数

Get-ChildItem $dump_path -Recurse -Directory | 
    Where-Object {$_.LastWriteTime -lt $del_date } | 
    Get-ChildItem -Recurse | 
    Remove-Item -Recurse -Confirm:$False -Force -WhatIf

堆栈溢出不是代码编写服务。你尝试了什么?请将尝试添加到您的问题“通过查看文件夹时间戳删除文件”是什么意思?哪个文件夹?哪个时间戳(创建、修改)?我想你的意思是“通过查看文件夹的创建日期来删除文件夹(及其内容)”?如果是这样,
getchilditem-Directory |?CreationTime-lt$del_date
将为您获取文件夹,然后删除这些文件夹。不要费心检查单个文件。如果这不是您的意思,那么请进一步解释…堆栈溢出不是一种代码编写服务。你尝试了什么?请将尝试添加到您的问题“通过查看文件夹时间戳删除文件”是什么意思?哪个文件夹?哪个时间戳(创建、修改)?我想你的意思是“通过查看文件夹的创建日期来删除文件夹(及其内容)”?如果是这样,
getchilditem-Directory |?CreationTime-lt$del_date
将为您获取文件夹,然后删除这些文件夹。不要费心检查单个文件。如果你不是这个意思,那就多解释一下。。。