2012-05-07 1 views
2

우리는 다음과 같은 파일이 있습니다 :파워 쉘 패턴 일치하는 정규 표현식은 우리의 서버에서

C:\Documents and Settings\username\Application Data\Sun\Java\jre1.6.0_01\ 
C:\Documents and Settings\username\Application Data\Sun\Java\jre1.6.0_02\ 
C:\Documents and Settings\username\Application Data\Sun\Java\jre1.6.0_03\ 
etc 

우리는 더 이상 그래서 이러한 파일이 필요하지 않습니다 내가 그들을 삭제하는 파워 쉘 스크립트를 작성하려합니다. 지금 나는 하나 개의 특정 서버에 자신을 제한, 그리고 난 다음 스크립트를 가지고 :

$path = "\\server\c$\Documents and Settings\" 
Get-ChildItem $path -Recurse | Where {$_.PSIsContainer -and ($_ -match '^jre1.6.0_')} | Remove-Item -Recurse -WhatIf 

문제는 내가 사용하고있는 패턴 일치를 호출하지 않는 것이다 난 잘 모르겠어요 내가 잘못하고있어. 여러 순열을 시도했지만 아무 것도 작동하지 않는 것 같습니다. 어떤 정규 표현식 전문가가 내가 잘못하고 있을지에 대해 밝힐 수 있습니까?

감사 브래드

답변

3

이 같은 시도는

$_.Name -match '^jre1.6.0_' 

하지를 시도해야한다고 생각 :

Get-ChildItem $path -Recurse -Force | .... 

-Force은 숨겨진 파일이나 시스템 파일/폴더도 찾습니다.

"응용 프로그램 데이터"폴더가 숨겨져 있습니다!

+0

그게 다야! 숨겨진 폴더에 들어 가지 않았습니다. 고맙습니다! – Brad

1

정규식은 괜찮습니다, 방금

$_ -match '^jre1.6.0_' 
+1

'$ _ -match ... '를 사용하는 것은 객체의'ToString()'행동에 의존합니다. 그래서 네, 스크립트에서'$ _. Name -match ... '를 사용할 것입니다. –

+0

그 중 하나가 작동하지 않는 것 같습니다. 스크립트를 10 분 이상 실행하고 아무 것도 반환하지 않도록했습니다. 모든 디렉토리를 되풀이하는 데 더 많은 시간이 필요한지 확인하기 위해 완료 될 때까지 계속 실행하도록하겠습니다. – Brad

+0

마침내 끝났습니다 - 결과가 없습니다. PS C : \ Documents and Settings \ user \ desktop>. \ cleanjava.ps1 PS C : \ Documents and Settings \ user \ desktop> – Brad