2013-04-01 52 views
1

我有一個超過10TB數據的數據庫,需要組織數據。我通過使用Powershell將文件輸出到文本文件,然後將其導入excel進行進一步處理。我只想要Z驅動器的文件夾和子文件夾。我不想要任何文件。我嘗試排除某些文件夾及其中的所有子文件夾時遇到問題。只輸出文件夾並排除特定文件

說例如我想排除的文件夾的名稱和它們的內容是'BackScatter'和'MicroData'。 我使用這個腳本:

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

我沒有得到一個錯誤,它只是簡單的犯規排除這些文件夾時,它的遞歸。

另外我想知道是否可以排除'Backscatter'內的子文件夾而不是整個文件夾。我在網站上做了很多搜索,但我很新,我不能理解任何回答問題的腳本。

回答

0

嗯,它可能不包括你告訴它的2個文件夾,但由於遞歸而不是子文件夾。

您可以嘗試後處理。像添加| ? {$ _ -notmatch'Backscatter | MicroData'}

+0

非常感謝你好,先生。您的後期處理添加工作。 –

+0

順便說一句,我假設你沒有使用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

YES !!它非常感謝你。你救了一個人很多小時的挫折。 –

0

試試這個:

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

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

Get-Help Get-ChildItem -Full

我使用PS 3.0,它似乎有-File-Directory開關,您可以使用,而不是? {$_.psiscontainer}。在處理大數據時使用Foreach-Object %,它比Where-Object更快。至於-Exclude不工作,我不確定。您始終可以使用regex-match運算符。

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