windowsのファイルコピーであるフォルダ以下にあるすべてのファイルを、フォルダ構造なしに”ファイルのみ”別のフォルダへコピーするには?
しばらくmac/linuxでWindowsは事務処理だけになってまして、初めてPowerShell使いました。
以下の方法で、有料アプリを使わずにスクリプトでフラットコピーできました。
1. 以下のスクリプトファイルを作成
flatcopy.ps1
$sourcePath = "D:\MEDIA_PICTURES\"
$destinationPath = ".\PICTURES\"
# コピー先フォルダが存在しない場合は作成
if (-not (Test-Path -Path $destinationPath)) {
New-Item -ItemType Directory -Path $destinationPath | Out-Null
}
# ファイルを再帰的に取得して、フォルダ階層を無視してコピー
Get-ChildItem -Path $sourcePath -Recurse -File | ForEach-Object {
$destinationFile = Join-Path -Path $destinationPath -ChildPath $_.Name
Copy-Item -Path $_.FullName -Destination $destinationFile -Force
}
2. 実行
パーミッションエラーにならないように以下のように実行
>PowerShell -ExecutionPolicy RemoteSigned .\flatcopy.ps1
課題:
- 重複するファイル名の処理
(以上です)