首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell -删除特定名称超过30天的文件夹中的子文件夹

Powershell -删除特定名称超过30天的文件夹中的子文件夹
EN

Stack Overflow用户
提问于 2014-05-29 18:57:11
回答 2查看 4.2K关注 0票数 2

stackoverflow,我正试图想出一个PoSh脚本来完成一个非常具体的任务,让我在这里把头撞到我的办公桌上。我对Powershell非常陌生,这里需要一些帮助。

以下是我正在努力实现的目标:

我需要能够搜索一个特定的文件夹,称为"30天扔“驱动器,并删除其中的任何子文件夹,其中有超过30天的创世日期。

示例:

P:\项目\2014\3D1004\计划1\30天投掷\档案1

P:\项目\2014\3D1004\计划2\30天折腾\04-12-2014

上面的Archive1文件夹是10天前创建的,不需要删除。上面的04-12-2014文件夹是30多天前创建的,需要删除,以及它下面的所有文件/文件夹。

项目、年、作业号和计划号都是可变的和变化的,所以硬编码搜索路径不是一种选择。

任何帮助都将是非常有用的,谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-29 19:43:42

好的,假设您的文件夹结构总是相同的,并且您总是希望该文件夹的第6层或其子文件夹,那么这将起作用:

代码语言:javascript
复制
gci P:\ -directory -recurse | ?{$_.FullName -match ".:\\.+?\\.+?\\.+?\\.+?\\.+?\\" -and $_.CreationTime -lt (get-date).AddDays(-30)}|Remove-Item -recurse -whatif

如果文件夹名为:

代码语言:javascript
复制
P:\<anything>\<anything>\<anything>\<anything>\<anything>\<anything>

它检查它是否是30天前创建的,如果是的话,它会删除它和它的所有内容。但它必须有那么多的水平,才能让脚本看到它。

编辑:,好的,让我们把它改一下。如果我们正在查找的文件夹总是被称为"30天抛出“,我们将查找所有具有该名称的文件夹,然后在每个文件夹中提取一个物品列表。放轻松点!第一,守则:

代码语言:javascript
复制
gci P:\ -Directory -Recurse | ?{$_.Name -ieq "30 Day Toss"} | %{GCI $_.FullName | ?{$_.CreationTime -lt (get-date).AddDays(-30)} | Remove-Item -Recurse -Force}

然后再把它拆开一点。

首先,我们得到P:驱动器上所有文件夹的列表。然后,我们只选择名为"30天掷硬币“(不区分大小写)。

对于使用该名称找到的每个文件夹,我们都会为该文件夹中的任何内容提取目录列表,然后只选择超过30天的内容。对于每一件超过30天的东西,我们都会删除它们,以及里面的任何东西。

票数 2
EN

Stack Overflow用户

发布于 2014-05-29 19:43:13

代码语言:javascript
复制
$date = (get-date).AddDays(-30)

$folders = gci "p:\" -filter "30 Day Toss" -recurse

Foreach ($subfolder in $folders.FullName) { gci $subfolder  | where {$_.psiscontainer} | where { $_.CreationTime -lt $date} | remove-item -force -recurse }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23940903

复制
相关文章

相似问题

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