Get-ChildItem -Path .\Folder1 -File |
ForEach-Object { Copy-Item -Path $_.FullName -Destination ".\Folder2\$($_.BaseName).txt" }
# Alternatively without ForEach-Object (see note below)
Get-ChildItem -Path .\Folder1 -File |
Copy-Item -Path $_.FullName -Destination { ".\Folder2\$($_.BaseName).txt" }
Это должно сделать работу.Имейте в виду, что это будет работать только для одного уровня, если вы хотите рекурсивное копирование структуры папок, вам придется немного изменить скрипт.
По сути, здесь происходит поиск всех файлов, а затем передачаих к Copy-Item
построению пути назначения со свойством BaseName
исходного файла (которое не имеет расширения, по сравнению со свойством Name
).
NOTE : поскольку -Path
принимает входные данные конвейера (см. документы здесь ), вам не нужно использовать ForEach-Object
.Тем не менее, он все еще может быть полезен для наглядности (в зависимости от ваших предпочтений).
Кредиты @ LotPings для того, чтобы обратить внимание на вышесказанное.