2013-09-24 76 views
1

我的腳本查找folder1中的所有文件並檢查這個文件是否存在於folder2中。如果它存在,那麼我想從folder2中刪除文件並將文件從Folder1移動到folder3。powershell使用管道進行多個操作

$folder1 = "D:\folder1" 
$folder2= "D:\folder2" 
$folder3 = "D:\folder3" 

$a = Get-ChildItem $folder1 | select -ExpandProperty basename 

$a | foreach { 
    Get-ChildItem -Path $folder2 -filter *$_* -Recurse 
} 

現在,如果我在每個循環的末尾使用管道,我可以刪除或移動,但不能同時移動。我如何處理這種情況?

+0

你可以使用一個分號的腳本塊來執行多個命令,所以這樣的事情應該工作: $ A | foreach {Get-ChildItem -Path $ folder2 -filter * $ _ * -Recurse} | foreach {Remove-Item $ _。FullName;複製項目$ folder1 \ $ _。BaseName $ Folder3} –

+0

謝謝。這是我正在嘲笑的答案。你可以讓這個答案 – Rupesh

+0

不用擔心,我已經在下面發佈了答案,如果你投票決定,或者如果它解決了你的問題,選擇它作爲正確的答案,我將不勝感激。謝謝 –

回答

1

move-itemremove-item都不會向管道輸出任何東西。但兩者都有-PassThru開關參數以允許進一步處理。

0

這將做的工作:

$A | foreach { Get-ChildItem -Path $folder2 -filter $_ -Recurse} | foreach {Remove-Item $_.FullName; Copy-Item $folder1\$_.BaseName $Folder3} 
0
Get-ChildItem -File -Include(Get-ChildItem -File $folder1) $folder2\* | 
foreach { remove-item $_ ; move-item (join-path $folder1 $_.BaseName) -destination $folder3}