如何使用PowerShell以递归方式删除带有数字名称的文件夹

时间:2018-06-04 06:41:05

标签: powershell recursion directory

我有脚本根据修改日期删除文件夹。 如果文件夹名称中只包含数字,有人可以帮我删除吗?

$locations=import-csv "C:\Temp\Scripts\AgeOffDirsGeneral.csv"

foreach ($location in $locations)
{

    $Source=$location.Source

    Get-ChildItem  $source  |Where-Object  {$_.psiscontainer}  | Foreach-Object {Remove-Item  -Recurse  -Force $_.FullName}

}

2 个答案:

答案 0 :(得分:0)

Remove-Item接受管道输入,因此不需要ForEach 如果输出看起来没问题,请删除-WhatIf

locations=import-csv "C:\Temp\Scripts\AgeOffDirsGeneral.csv"

foreach ($location in $locations){

    $Source=$location.Source

    Get-ChildItem  $source -Dir -Recurse|
      Where-Object  { $_.Name -match '^\d+$'}  | 
        Remove-Item -Force -WhatIf
}

BTW中间变量$ source可以避免直接插入$ location.Source

答案 1 :(得分:-1)

我可以使用-like标记解决此问题。

$locations=import-csv "C:\Temp\Scripts\AgeOffDirsGeneral.csv"
foreach ($location in $locations)
{
    $Source=$location.Source
    Get-ChildItem  $source  | Where-Object {  $_.psiscontainer -and $_.Name -like '*[0-9]*' } | Foreach-Object {Remove-Item  -Recurse  -Force $_.FullName}
}