見出し画像

Windows Power Shell でフラットコピー

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

便利になったみたいですが、色々と面倒な(笑
これまで無数に作ったスクリプトは散逸したものが多いので、このスクリプトからgithubにこういう小さいスクリプト用を作って管理することにしました。形になったら公開したいです(^o^)/

課題:

  • 重複するファイル名の処理

(以上です)

おまけ:


いいなと思ったら応援しよう!

そんちゃー君
サポートありがとうございます😊 ベトナムにお越しの際はお声がけくださいね🌻