В моем случае у меня уже была создана целевая папка, и у меня все еще были проблемы. Тем не менее, я не добавил *, и это имело значение.

я есть набор проектов, которые включают в себя смесь файлов, специфичных для проекта, плюс общие файлы. Я пытаюсь скопировать содержимое из двух разных папок - определенной для проекта папки и общей папки - в одну папку с именем для проекта. Я также хочу сохранить любые иерархии папок из исходных папок.

Например, некоторые пути к общим файлам:

src\Common\PackageAssets\logo1.jpg
src\Common\PackageAssets\logo2.jpg

И пример пути к конкретным файлам проекта:

src\Projects\ProjectA\PackageFiles\readme.txt
src\Projects\ProjectA\PackageFiles\scale-100\projA.png

Желаемый результат после копирования будет:

bld\ProjectA\pkgFiles\logo1.png
bld\ProjectA\pkgFiles\logo2.png
bld\ProjectA\pkgFiles\readme.txt
bld\ProjectA\pkgFiles\scale-100\projA.png

Я использую вот это:

[string]$pkgContentPath = "bld\$project\pkg_contents"

# copy common files
Copy-Item -Path .\src\Common\PackageAssets -Recurse -Destination $pkgContentPath
# copy project-specific files
Copy-Item -Path .\src\Projects\ProjectA\PackageFiles\ -Recurse -Destination $pkgContentPath

Но вместо ожидаемых результатов все файлы попадают в дополнительный уровень подпапки:

bld\ProjectA\pkgFiles\PackageAssets\logo1.png
bld\ProjectA\pkgFiles\PackageAssets\logo2.png
bld\ProjectA\pkgFiles\PackageFiles\readme.txt
bld\ProjectA\pkgFiles\PackageFiles\scale-100\projA.png

Я в тупике. Я не могу понять, как избавиться от дополнительного слоя подпапки. Я пытался использовать конвейер Get-ChildItem для Copy-Item, но тогда иерархия подпапок была потеряна.

В файле .bat это работает:

xcopy src\Common\PackageAssets\* bld\%project\pkg_contents /s
xcopy src\Projects\%project\PackageFiles bld\%project\pkg_contents /s

Я думаю, я мог бы использовать xcopy, но наверняка должен быть способ сделать это с помощью командлетов.

Ответы на вопрос(1)

Ваш ответ на вопрос