2015-06-21 50 views
1

我在一個名爲$ filepaths的變量中存儲了與我正在查找的特定文本相匹配的文件路徑。現在,我想要做的是複製這些文件,它們與我正在查找的內容相匹配,並將它們放到一個新文件夾中,並說出文件路徑:C:\ newfolder使用Powershell複製包含特定關鍵字的文件並將它們移動到另一個文件夾

我已經編寫了以下簡單腳本,兩者都不工作的:

1.

Copy-Item -path $match in $filepaths -Destination C:\newfolder -Recurse

2.

foreach($match in $filepaths) 
{ 
    Copy-Item -path $match -Destination C:\newfolder 
} 

我使用$filepaths = $files | Format-Table * -wrap(工作)轉換的文件路徑到一個表格式 - 但perha ps這是什麼導致問題?

我在哪裏錯了?

+1

他們都應該在第一個變化中工作。 'Copy-Item -path $ filepaths -Destination C:\ newfolder'。你沒有得到任何錯誤?您是否確信'$ filepaths'包含它應該使用的數據並且它不爲空 – Matt

+0

我將文件路徑轉換爲表格格式,即使用$ filepaths = $ files | Format-Table * -wrap [which works] - 但也許這是導致問題的原因?如果是這樣,文件路徑的最佳格式是什麼? – CodeMaster

回答

2

AHHHH的Format-....問題

切勿使用Format-Anything,如果你打算再次使用這些數據。通過保存表格格式,您損壞了您所擁有的對象。

我不知道$files是什麼,但如果它是從Get-ChildItem輸出,然後離開它,你會沒事的。如果它只是一個字符串數組,那也是一樣。

請看下面的例子

適當的輸出

Get-ChildItem c:\temp | Get-Member會給你System.IO.DirectoryInfoSystem.IO.FileInfo對象的潛在組合。

「損壞」 輸出

Get-ChildItem c:\temp | Format-Table | Get-Member會給你對象像下面這樣。還有更多,但點是原來的物體消失了。

Microsoft.PowerShell.Commands.Internal.Format.GroupStartData 
Microsoft.PowerShell.Commands.Internal.Format.FormatStartData 
Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData 
.... 
相關問題