Get-ChildItem
ファイル名フィルターで再帰的に含めて、ファイルとディレクトリーをリストできます。Copy-Item
ファイルをコピーできます。
ファイルの選択に関して多くの重複がありますCopy-Item
。必要なものの詳細に応じて、多くの場合それ自体で十分です(たとえば、フォルダー構造を保持しますか?)
すべてをStartFolderからDestFolderにコピーする*.foo
に*.bar
は:
Copy-Item -path "StartFolder" -include "*.foo","*.bar" -Destination "DestFolder"
フォルダ構造を保持する必要がある場合、次のような宛先フォルダ名を作成する必要があるため、状況はさらに難しくなります。
$sourcePath = 'C:\StartFolder'
$destPath = 'C:\DestFolder'
Get-ChildItem $sourcePath -Recurse -Include '*.foo', '*.bar' | Foreach-Object `
{
$destDir = Split-Path ($_.FullName -Replace [regex]::Escape($sourcePath), $destPath)
if (!(Test-Path $destDir))
{
New-Item -ItemType directory $destDir | Out-Null
}
Copy-Item $_ -Destination $destDir
}
しかしrobocopy
、おそらく簡単です:
robocopy StartFolder DestFolder *.foo *.bar /s
結局、選択する方法は、必要なものの詳細に依存します。
(上記では、エイリアスCopy-Item
ではなく(例:)を避けcopy
、位置が正しい場合でもパラメーター名を明示的に使用しています。)