2014-07-13 1 views
0

DoNotDelete.txt 파일과 그 하위 폴더가 포함 된 폴더와 하위 폴더를 제외하고 디렉터리의 모든 파일과 하위 폴더를 반복적으로 삭제하려고합니다. 해당 파일이 없습니다).부모 디렉터리와 특정 파일이 들어있는 폴더의 하위 디렉터리를 제외하고 디렉터리 제거

내가 폴더 E를 유지하려면이 예에서 : \ testFolder \ testF1 \ blablabla와 그 자식 내가 다른 스레드에서 발견 된 약간의 조언을

나는이 솔루션을 함께했다. 부분적으로 만 의도 한대로

(Get-ChildItem E:\testFolder -recurse | select -ExpandProperty fullname) -notlike '*blablabla*' | sort length -descending | remove-item -Recurse -WhatIf 

스크립트가 작동합니다 -이 폴더 'blablabla'와 아이를 삭제 생략하지만, 여전히 부모 (폴더 testF1) 삭제 - 전체 노력의 무의미를 렌더링 :

중 & hellip ;
경우 대상 "E : \ testFolder \ testF1"에서 "디렉토리 제거"작업을 수행합니다.
& hellip;

디렉토리 트리에서 부모 및 모든 직접 조상을 삭제하는 것을 방지하려면 어떻게해야합니까?

답변

0

이 시도 :

$savedirs = @() 

$DoNotDeleteFiles = 
get-childitem E:\testfolders -Recurse -Include donotdelete.txt | 
select -ExpandProperty fullname 

foreach ($DoNotDeleteFile in $DoNotDeleteFiles) 
{ 
    While ($true) 
    { 
    Try{ 
     $savedirs += ($DoNotDeleteFile = $DoNotDeleteFile | Split-Path -Parent -ErrorAction stop) 
    } 
    catch { Break } 
    } 
    } 


(Get-ChildItem E:\testFolder -recurse | select -ExpandProperty fullname) -notlike '*blablabla*' | 
where { $savedirs -notcontains $_ } | 
sort length -descending | remove-item -WhatIf