移动时保留 Get-ChildItem 中的第一层文件夹
Keep first layer of folders from Get-ChildItem when moving
我正在处理一些 PowerShell 脚本,它会自动将文件夹和文件从 'X-Drive' 文件夹移动到 'Old' 文件夹,该文件夹也位于 'X-Drive' 文件夹中,但是我想让它只保留第一层文件夹,里面的东西都可以移动但只需要保留文件夹,但它也需要在'Old'文件夹中。
$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'
枚举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
,顺便说一句。
代码假定您是 运行 PowerShell v3 或更新版本。
我正在处理一些 PowerShell 脚本,它会自动将文件夹和文件从 'X-Drive' 文件夹移动到 'Old' 文件夹,该文件夹也位于 'X-Drive' 文件夹中,但是我想让它只保留第一层文件夹,里面的东西都可以移动但只需要保留文件夹,但它也需要在'Old'文件夹中。
$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'
枚举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
,顺便说一句。
代码假定您是 运行 PowerShell v3 或更新版本。