2013-09-24 3 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; Copy-Item $ folder1 \ $ _. BaseName $ Folder3} –

+0

감사합니다. 그 대답은 내가 농담이었던 것이다. 이 질문에 대답을 할 수 있습니까 – Rupesh

+0

걱정하지 마십시오, 나는 아래의 답을 게시했습니다. 투표를 해 주시거나 문제가 해결 된 경우 올바른 답을 선택해 주시면 감사하겠습니다. 감사 –

답변

1

move-item 또는 remove-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} 
관련 문제