【发布时间】:2013-02-04 16:33:56
【问题描述】:
我只需要使用 Powershell 复制文件夹的某些部分,特别是这个列表:
$files = @("MyProgram.exe",
"MyProgram.exe.config",
"MyProgram.pdb",
".\XmlConfig\*.xml")
以人类可读的形式:目标文件夹根目录下的 3 个特定 MyProgram.* 文件和 XmlConfig 文件夹下的所有 XML 文件,该文件夹本身位于源路径的根目录下(在我的情况下为 ..\bin\Release\)。 XmlConfig 文件夹必须在目的地创建,如果它不存在。
我尝试过的:
(1) 我尝试了以下方法,但没有成功,即在目标路径没有创建文件夹或文件:
Copy-Item -Recurse -Path "..\bin\Release\" -Destination ".\Test\" -Include $files
(2) 当-Include被删除时,整个文件夹结构创建成功,包括子文件夹和文件:
Copy-Item -Recurse -Path "..\bin\Release\" -Destination ".\Test\"
我对@987654329@过滤器工作原理的理解一定有问题:
(3) 我测试了-Include 需要一个通配符数组的假设,但这也不起作用:
$files = @("*MyProgram.exe*",
"*MyProgram.exe.config*",
"*MyProgram.pdb*",
"*.\XmlConfig\*.xml*")
请就我的情况如何正确处理Copy-Item提出建议。
更新(基于以下答案):
我正在寻找一个接受字符串数组的通用实现。它打开了将所有必要的文件/路径放在一个地方的可能性,以便于编辑,以便非 Powershell 知识的人可以根据需要理解和修改它。因此,最终它将是为任何项目执行 XCOPY 部署的单个脚本,输入文件是唯一的可变部分。对于上面的例子,输入看起来像这样(保存为input.txt 并作为参数传递给主脚本):
MyProgram.exe
MyProgram.exe.config
MyProgram.pdb
.\XmlConfig\*.xml
我更喜欢通配符方法,因为知道正则表达式的人并不多。
【问题讨论】:
标签: powershell xcopy