1

我有一个包含超过 10TB 数据的数据库,需要组织数据。我这样做是通过使用 Powershell 仅将文件夹输出到文本文件,然后将其导入到 Excel 中进行进一步处理。例如,我只想要 Z 驱动器的文件夹和子文件夹。我不想要任何文件。当我尝试排除某些文件夹及其中的所有子文件夹时遇到问题。

例如,我要排除的文件夹名称及其内容是“BackScatter”和“MicroData”。我正在使用这个脚本:

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

我没有收到错误,它只是在递归时不排除这些文件夹。

另外我想知道我是否可以只排除“Backscatter”中的子文件夹而不是整个文件夹。我在网站上做了很多搜索,但我太新了,我无法理解任何回答问题的脚本。

4

4 回答 4

1

Get-Help Get-ChildItem -Full

我使用的是 PS 3.0,似乎有-File-Directoryswitch 可以用来代替? {$_.psiscontainer}. 处理大数据时,使用Foreach-Object%比 Where-Object 更快。至于-Exclude不工作,我不确定。您始终可以使用正则表达式-match运算符。

Get-ChildItem $path -r -Directory | % {if($_.name -notmatch 'BackScatter|MicroData'){$_.fullname}}
于 2013-04-01T22:48:45.097 回答
0

这对你有用吗?

(dir -recurse | Where-Object { $_.PSIsContainer } | ForEach-Object { $_.FullName }) -notmatch '\\(BackScatter|MicroData)\\' > ZDrive.txt
于 2013-04-01T17:44:43.767 回答
0

尝试这个:

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

dir -recurse | ? {
  $_.PSIsContainer -and $excludes -notcontains $_.Name
} | % { $_.FullName } > ZDrive.txt
于 2013-04-01T19:25:43.933 回答
0

好吧,由于递归,它可能不包括您告诉它的 2 个文件夹,但不包括子文件夹。

你可以试试后期处理。喜欢添加 | ? {$_ -notmatch 'Backscatter|MicroData'}

于 2013-04-01T17:03:59.397 回答