Это не самый элегантный код, который я написал, но он выполняет свою работу:
$destination = "x:\files\"
Get-Content "paths.txt" | foreach {
Get-ChildItem $_\* | foreach {
$suffix = 0
do {
if ($suffix -eq 0) {$name = $_.Name}
else {$name = $_.BaseName + "_" + $suffix + $_.Extension}
$suffix++
}
until(-not(Test-Path (Join-Path $destination $name)))
Copy-Item $_.FullName (Join-Path $destination $name)
}
}