我需要複製使用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
這就是你在你的例子中所做的...相對路徑和野馬也可以用我的代碼 –