stackoverflow,我试图提出一个PoSh脚本来完成一个非常具体的任务,我不得不将头顶在这里。我对Powershell相当陌生,在这里需要一些帮助。
这是我要完成的工作:
我需要能够在驱动器中搜索名为“ 30 Day Toss”的特定文件夹,并删除其中的创建日期已超过30天的子文件夹。
例:
P:\ Project \ 2014 \ 3D1004 \ Plan 1 \ 30 Day Tosss \ Archive1
P:\ Project \ 2014 \ 3D1004 \ Plan 2 \ 30 Day Tosss \ 04-12-2014
上面的Archive1文件夹是10天前创建的,不需要删除。上面的04-12-2014文件夹是在30天前创建的,需要删除以及其下的所有文件/文件夹。
项目,年份,工作编号和计划编号都是可变的且已更改,因此,对搜索路径进行硬编码不是一个选择。
任何帮助将不胜感激,谢谢!
好的,因此假设您的文件夹结构始终相同,并且始终希望文件夹或文件夹的第6级功能可以正常工作:
gci P:\ -directory -recurse | ?{$_.FullName -match ".:\\.+?\\.+?\\.+?\\.+?\\.+?\\" -and $_.CreationTime -lt (get-date).AddDays(-30)}|Remove-Item -recurse -whatif
如果文件夹名称为:,它将查看整个P:驱动器中的文件夹:
P:\<anything>\<anything>\<anything>\<anything>\<anything>\<anything>
它会检查它是否已创建超过30天,如果已创建,它将删除它及其所有内容。但是它必须具有许多级别的脚本才能对其进行查看。
编辑:好的,让我们对其进行一些更改。如果我们在其中查找的文件夹始终被称为“ 30天折腾”,我们将查找具有该名称的所有文件夹,然后在其中每个文件夹中拉出一个清单。很简单!一,代码:
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天的所有内容,我们都会将其以及其中的任何内容删除。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句