Windows
具有多個過濾器的複制項
如何使用帶有多個過濾器值的副本?
例如,如果我只指定 1 個值來過濾 (*.jpg)
Copy-Item -Path Y:\TEST -Recurse -Filter *.jpg -Destination D:\Users\MS5253\Desktop\Lots
這會為我創建一個僅包含 jpg 文件的文件夾 (D:\Users\MS5253\Desktop\Lots\TEST)
但我也想過濾 xml 文件,我試過這個:
Copy-Item -Path Y:\TEST -Recurse -Filter *.jpg,*.xml -Destination D:\Users\MS5253\Desktop\Lots
它給了我一個錯誤。
還有這個 :
Copy-Item -Path Y:\TEST -Recurse -include "*.jpg","*.xml" -Destination D:\Users\MS5253\Desktop\Lots
它不起作用…
感謝您的幫助,我正在使用帶有 Powershell v4 的 Windows 7。
如果您希望將所有 jpg 和 xml 文件放在一個文件夾中,您可以使用
Get-ChildItem -Include
:Get-ChildItem -Include *.jpg,*.xml -Recurse | ForEach-Object { Copy-Item -Path $_.FullName -Destination D:\Users\MS5253\Desktop\Lots }
如果您需要保留文件夾結構,似乎除了手動路徑管理之外別無他法:
function Copy-Filtered { param ( [string] $Source, [string] $Target, [string[]] $Filter ) $ResolvedSource = Resolve-Path $Source $NormalizedSource = $ResolvedSource.Path.TrimEnd([IO.Path]::DirectorySeparatorChar) + [IO.Path]::DirectorySeparatorChar Get-ChildItem $Source -Include $Filter -Recurse | ForEach-Object { $RelativeItemSource = $_.FullName.Replace($NormalizedSource, '') $ItemTarget = Join-Path $Target $RelativeItemSource $ItemTargetDir = Split-Path $ItemTarget if (!(Test-Path $ItemTargetDir)) { [void](New-Item $ItemTargetDir -Type Directory) } Copy-Item $_.FullName $ItemTarget } }