2013-04-01 4 views
1

데이터가 10TB 이상인 데이터베이스가 있으며 데이터를 구성해야합니다. Powershell을 사용하여 폴더 만 텍스트 파일로 출력 한 다음 추가 처리를 위해 가져옵니다. 나는 예를 들어 Z 드라이브와 같은 폴더와 하위 폴더 만 원한다. 나는 어떤 파일도 원하지 않는다. 특정 폴더 및 그 안에있는 모든 하위 폴더를 제외하려고 할 때 문제가 발생합니다.폴더 만 출력하고 특정 폴더는 제외하십시오.

예를 들어 제외하고 싶은 폴더 및 내용의 이름은 'BackScatter'및 'MicroData'입니다. 나는 그것이 단지 그것의 재귀를 수행 할 때 해당 폴더를 제외 나던 오류가 발생하지 않는

dir -recurse -Exclude "Backscatter","MicroData" | Where-Object { $_.PSIsContainer } | ForEach-Object { $_.FullName } > ZDrive.txt 

: 나는이 스크립트를 사용하고 있습니다.

또한 'Backscatter'내에서 하위 폴더를 제외하고 전체 폴더를 제외 할 수 있는지 궁금합니다. 나는 사이트에서 많은 검색을했지만, 나는 새로운 질문을하는 스크립트를 이해할 수 없다.

답변

0

재귀 때문에 하위 폴더가 아닌 2 개의 폴더를 제외했을 가능성이 높습니다.

후 처리를 시도 할 수 있습니다. 추가하는 것과 같이 | ? {$ _ -notmatch 'Backscatter | MicroData'}

+0

대단히 감사합니다. 후 처리 추가 작업이 이루어졌습니다. –

+0

btw, 나는 당신이 디렉토리만을 선택할 수있는 옵션 (디렉토리)을 가지고 Powershell 3.0을 사용하지 않는다고 가정합니다. 그러면 다음과 같이 끝날 것입니다 : (dir -recurse -directory) .fullname | ? {$ _ -notmatch 'Backscatter | MicroData'} –

0

이 방법이 효과가 있습니까?

(dir -recurse | Where-Object { $_.PSIsContainer } | ForEach-Object { $_.FullName }) -notmatch '\\(BackScatter|MicroData)\\' > ZDrive.txt 
+0

예! 그것은 대단히 감사했습니다. 한 남자를 여러 시간 동안 좌절감으로 구해 냈습니다. –

0

이 시도 : 나는 PS 3.0을 사용하고

$excludes = @("BackScatter", "MicroData") 

dir -recurse | ? { 
    $_.PSIsContainer -and $excludes -notcontains $_.Name 
} | % { $_.FullName } > ZDrive.txt 
1

Get-Help Get-ChildItem -Full

, -File하고 대신 ? {$_.psiscontainer}의 사용할 수 있습니다 -Directory 스위치가 나타납니다. 대용량 데이터로 작업 할 때 Foreach-Object %을 사용하면 Where-Object보다 빠릅니다. -Exclude이 작동하지 않는 것처럼 나는 잘 모르겠습니다. 항상 regex-match 연산자를 사용할 수 있습니다.

Get-ChildItem $path -r -Directory | % {if($_.name -notmatch 'BackScatter|MicroData'){$_.fullname}}