我需要复制使用Powershell的一个文件夹的仅某些部分,特别是该列表:XCOPY部署脚本 - 如何包含某些文件?
$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\"
它一定是有毛病我的-Include
过滤器是如何工作的理解:
(3)我测试了一下-Include
需要通配符数组的假设,但这并没有工作,要么:
$files = @("*MyProgram.exe*",
"*MyProgram.exe.config*",
"*MyProgram.pdb*",
"*.\XmlConfig\*.xml*")
请建议如何在我的情况下适当地使用Copy-Item
。
UPDATE(下面的答案基于):
我要寻找一个通用实现这需要一个字符串数组。它可以将所有必要的文件/路径放在一个地方,以便于编辑,这样非Powershell知识丰富的人员可以根据需要理解和修改它。所以最终它将是单个脚本为任何项目执行XCOPY部署,输入文件是唯一可变的部分。对于上面的例子中,输入应该是这样的(保存为input.txt
和作为参数传递给主脚本传递):
MyProgram.exe
MyProgram.exe.config
MyProgram.pdb
.\XmlConfig\*.xml
我宁愿通配符的方法,因为没有多少人知道正则表达式。
-Filter只需要一个字符串 –
我需要在目标文件夹这个工作。但如果我在目标文件夹中,'.. \ bin \ release'将不起作用。或'$ files'需要指定我不想要的绝对路径。 – Neolisk
这就是你在你的例子中所做的...相对路径和野马也可以用我的代码 –