【发布时间】:2018-06-06 11:05:08
【问题描述】:
我有一组项目,其中包含项目特定文件和公共文件的混合。我正在尝试将两个不同文件夹(一个项目特定文件夹和一个公用文件夹)中的内容复制到为该项目命名的单个文件夹中。我还想保留原始文件夹中的所有文件夹层次结构。
例如一些常用文件的路径:
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\pkgFiles"
# 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,但肯定有办法使用 cmdlet 来做到这一点。
【问题讨论】:
-
New-Item bld\ProjectA\pkgFiles -Type Directory; Copy-Item -Path .\src\Common\PackageFile\* bld\ProjectA\pkgFiles -Recurse; Copy-Item -Path .\src\Projects\ProjectA\PackageFiles\* bld\ProjectA\pkgFiles -Recurse -
还有什么奇怪的是,当我在控制台和脚本中运行命令时,结果是不同的。
标签: windows powershell