移动时,从Get-ChildItem保留第一层文件夹

时间:2017-09-29 07:40:12

标签: powershell get-childitem

我正在开发一些PowerShell脚本,可以自动从“X-Drive”中移动文件夹和文件。文件夹并将其移动到“旧”文件夹中。文件夹也位于' X-Drive'文件夹,但我希望它只保留第一层文件夹,所有内容都可以移动,但只需要保留文件夹,但它也需要在“旧”文件夹中。文件夹中。

$exclude = @('Keep 1', 'Keep 2')
Get-ChildItem -Path "C:\X-Drive" -Recurse -Exclude $exclude |
    Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-0) } |
    Move-Item -Destination "C:\X-Drive\Old" -ErrorAction 'SilentlyContinue'

1 个答案:

答案 0 :(得分:0)

枚举C:\X-D_rive的子文件夹,然后将其内容移至C:\X-Drive\old中的相应子文件夹,例如像这样:

$refdate = (Get-Date).AddDays(-1)
Get-ChildItem 'C:\X-Drive' -Directory -Exclude $exclude | ForEach-Object {
    $dst = Join-Path 'C:\X-Drive\old' $_.Name
    If (-not (Test-Path -LiteralPath $dst)) {
        New-Item -Type Directory -Path $dst | Out-Null
    }
    Get-ChildItem $_.FullName -Recurse | Where-Object {
        $_.LastWriteTime -lt $refdate
    } | Move-Item -Destination $dst
}

您可能希望将old添加到$excludes,BTW。

代码假定您正在运行PowerShell v3或更新版本。