powershell使用管道进行多个操作

时间:2013-09-24 09:49:18

标签: powershell pipe operation

我的脚本查找folder1中的所有文件,并检查folder2中是否存在此文件。如果它存在,那么我想从folder2中删除该文件,并将文件从Folder1移动到folder3。

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

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

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

现在,如果我在每个循环结束时使用管道,我可以删除或移动但不能同时删除。我该如何处理这种情况?

3 个答案:

答案 0 :(得分:1)

move-itemremove-item都没有向管道输出任何内容。但是两者都有一个-PassThru开关参数,以便进一步处理。

答案 1 :(得分:0)

这将完成这项工作:

$A | foreach { Get-ChildItem -Path $folder2 -filter $_ -Recurse} | foreach {Remove-Item $_.FullName; Copy-Item $folder1\$_.BaseName $Folder3} 

答案 2 :(得分:0)

Get-ChildItem -File -Include(Get-ChildItem -File $folder1) $folder2\* |
foreach { remove-item $_ ; move-item (join-path $folder1 $_.BaseName) -destination $folder3}