我有一个包含超过10TB数据的数据库,需要组织数据。我这样做是通过使用Powershell仅将文件夹输出到文本文件,然后将其导入excel进行进一步处理。我只想要说Z驱动器的文件夹和子文件夹。我不想要任何文件。当我尝试排除某些文件夹及其中的所有子文件夹时,我遇到了问题。
例如,我想要排除的文件夹名称及其内容是“BackScatter”和“MicroData”。 我正在使用这个脚本:
dir -recurse -Exclude "Backscatter","MicroData" | Where-Object { $_.PSIsContainer } | ForEach-Object { $_.FullName } > ZDrive.txt
我没有收到错误,只是在递归时不会排除这些文件夹。
此外,我想知道是否可以在“Backscatter”中排除子文件夹而不是整个文件夹。我在网站上做了很多搜索,但我很新,我无法理解任何回答这个问题的脚本。
答案 0 :(得分:1)
我正在使用PS 3.0,您可以使用-File
和-Directory
切换代替? {$_.psiscontainer}
。处理大数据时使用Foreach-Object %
它比Where-Object更快。至于-Exclude
无效,我不确定。您始终可以使用regex和-match
运算符。
Get-ChildItem $path -r -Directory | % {if($_.name -notmatch 'BackScatter|MicroData'){$_.fullname}}
答案 1 :(得分:0)
好吧,它可能会排除你告诉它的2个文件夹,但不包括子文件夹因为递归。
您可以尝试后期处理。喜欢添加| ? {$ _ -notmatch'Backscatter | MicroData'}
答案 2 :(得分:0)
这对你有用吗?
(dir -recurse | Where-Object { $_.PSIsContainer } | ForEach-Object { $_.FullName }) -notmatch '\\(BackScatter|MicroData)\\' > ZDrive.txt
答案 3 :(得分:0)
试试这个:
$excludes = @("BackScatter", "MicroData")
dir -recurse | ? {
$_.PSIsContainer -and $excludes -notcontains $_.Name
} | % { $_.FullName } > ZDrive.txt