【发布时间】:2015-11-27 09:18:25
【问题描述】:
我想我们都知道 PsIsContainer 方法来检查当前文件是否是文件夹。但是在我的项目中,我需要一种方法来快速了解文件夹中的文件夹数量。我所需要的只是快速获得他们的电话号码。我想写一个看起来像C:\folder;12 的.txt 行。这意味着在带有 -recurse 参数的文件夹中,将有 12 个文件夹。
为了解释原因,当我切断用于分析某些文件夹的程序时,我需要保存我的工作进度。分析文件夹时,结果将写入第二个 .txt。例如,如果一个文件夹被称为 C:\folder\folder1,文件夹将被分析,然后文件夹 1 也将被分析。这使得文件夹在文件中出现 2 次,因为始终写入全名。我想要做的是计算写入 C:\folder 的行数。如果它等于第一个.txt中它的路径下一个数字,则表示该文件已经被分析过,该函数不需要再次执行。
有人有解决方案吗?或者也许是另一个保存进度的想法?因为我真的觉得这样做需要很长时间。
感谢您的帮助。
【问题讨论】:
-
问题是使用此解决方案,我只能计算文件夹,我不能(或者我不知道如何)在 where-object cmdlet 中设置另一个条件。例如,我想设置一个条件检查我的函数是否返回一个大于某个阈值的数字,我该怎么做?
$i=(gci -force -recurse | where-object { $_.PSIsContainer (function1 -gt $threshold) }).Count不起作用。编辑:好的,我讨厌自己。我明白了,没关系。但是程序执行还是太长了 -
为了加快速度,您最好使用
Get-ChildItem -Force -Recurse -Directory,我相信 PowerShell 3.0 提供了开关-Directory。 -
@Kikopu 基于计数的恢复很棘手,您可能会遇到这样一种情况,即自上次运行以来在 C:\folder 中创建了一个名为“a”的文件夹,您如何决定是否如果您只知道 C:\folder 中的文件夹数,是否已对其进行处理?
标签: powershell count directory