В моем случае у меня уже была создана целевая папка, и у меня все еще были проблемы. Тем не менее, я не добавил *, и это имело значение.
я есть набор проектов, которые включают в себя смесь файлов, специфичных для проекта, плюс общие файлы. Я пытаюсь скопировать содержимое из двух разных папок - определенной для проекта папки и общей папки - в одну папку с именем для проекта. Я также хочу сохранить любые иерархии папок из исходных папок.
Например, некоторые пути к общим файлам:
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, но наверняка должен быть способ сделать это с помощью командлетов.