Как скопировать все файлы из одной папки в другую и изменить расширение? - PullRequest
1 голос
/ 18 июня 2019

У меня есть несколько файлов в папке без файла расширения. Я хочу скопировать все файлы в другую папку и изменить их расширение на .txt.

Я попробовал этот код, но он все еще вызывает ошибки при создании файла назначения.

$JOB = Copy-Item -Path C:\Users\XX\Documents\Folder1* -Destination "C:\Users\XX\Documents\Folder2"
Rename-Item -Path C:\Users\XX\Documents\Folder2\* -NewName *.TXT

1 Ответ

3 голосов
/ 18 июня 2019
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 для того, чтобы обратить внимание на вышесказанное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...