コピー元ディレクトリ配下の全ファイルをコピー先ディレクトリに重複排除、同名はリネームしながらコピーします。
PowerShell? -F ./fCopy.ps1
fromDirとtoDirを指定します。
ファイル名: fCopy.ps1
[string]$fromDir =
[string]$toDir =
[string]$fName = ""
[string]$ext = ""
[string]$bName = ""
[int]$fCnt = 0
[int]$fSize = 0
Get-ChildItem $fromDir -Recurse -include *.* -Name | ForEach-Object {
$fName = @(Split-Path $_ -Leaf)
if( Test-Path "$($toDir)\$($fName)" ) {
$fSize = (Get-ChildItem "$($fromDir)\$($_)").Length
if( $fSize -eq (Get-ChildItem "$($toDir)\$($fName)").Length ) {
echo "同一ファイルのためコピーしません。$($fromDir)\$($_) → $($toDir)\$($fName)"
$fName = "dumm565656565"
} else {
$cnt = 0
while( Test-Path "$($toDir)\$($fName)$($cnt.ToString("0000"))" ) {
$cnt++
}
$ext = (Get-ChildItem "$($fromDir)\$($_)").Extension
$bName = (Get-ChildItem "$($fromDir)\$($_)").BaseName
$fName = "$($bName)_$($cnt.ToString("0000"))$($ext)"
}
}
if( $fName -ne "dumm565656565" ){
Copy-Item "$($fromDir)\$($_)" "$($toDir)\$($fName)"
echo "コピーしました。$($fromDir)\$($_) → $($toDir)\$($fName)"
}
}