我可以计算一个文件夹和子文件夹中的所有文件,不计算文件夹本身。
(gci -Path *Fill_in_path_here* -Recurse -File | where Name -like "*STB*").Count
但是,对于文件数量(最多700k),powershell太慢。我读到cmd可以更快地执行此类任务。
不幸的是,我一点都不了解cmd代码。在上面的示例中,我计算了所有文件名中带有STB
的文件。
这也是我想在cmd中执行的操作。
感谢您的帮助。
答案 0 :(得分:3)
在cmd
命令行或批处理文件中最快的方法之一可能是
dir "x:\some\where\*stb*" /s /b /a-d | find /c /v ""
只需递归(/s
)dir
命令即可列出所有格式为裸(/a-d
的文件(无文件夹/b
),所有输出通过管道传递到find
命令,该命令将计算(/c
)非空行(/v ""
)的数量
但是,无论如何,您都需要枚举文件,这需要时间。
已编辑以适应评论,但
注释以下方法不适用于这种情况,因为至少在Windows 10中,dir
命令的摘要行中的空格填充设置为五个位置。大于99999的文件计数未正确填充,因此sort /r
输出不正确。
正如Ben Personick所指出的,dir
命令还输出文件数,我们可以检索以下信息:
@echo off
setlocal enableextensions disabledelayedexpansion
rem Configure where and what to search
set "search=x:\some\where\*stb*"
rem Retrieve the number of files
set "numFiles=0"
for /f %%a in ('
dir "%search%" /s /a-d /w 2^>nul %= get the list of the files =%
^| findstr /r /c:"^ *[1-9]" %= retrieve only summary lines =%
^| sort /r 2^>nul %= reverse sort, greater line first =%
^| cmd /e /v /c"set /p .=&&echo(!.!" %= retrieve only first line =%
') do set "numFiles=%%a"
echo File(s) found: %numFiles%
基本思想是使用一系列管道命令来处理数据检索的不同部分:
dir
命令生成文件列表(包含/w
只是为了减少行数)。 findstr
仅用于检索以空格开头(标题/摘要行)和大于0的数字(文件计数摘要行,当我们使用/a-d
时,目录计数摘要行的值为0)。set /p
实例中使用cmd
命令仅检索此行。由于完整序列包装在for /f
中,并且在从命令执行中检索长列表时存在性能问题,因此我们将尝试尽可能少地检索。 for /f
将标记检索到的行,获取第一个标记(文件数),并设置用于保存数据的变量(变量已初始化,有可能找不到文件)。
答案 1 :(得分:2)
如果您将filter
直接包含在command
中,而不是过滤比预先过滤的命令大得多的命令result set
,则可以使用PowerShell加快处理速度。
尝试一下:
(Get-ChildItem -Path "Fill_in_path_here" -Recurse -File -Include "*STB*").Count
答案 2 :(得分:2)
[System.IO.Directory]::EnumerateFiles()
)的Theo's helpful answer是最快的选择(在我的测试中; YMMV-请参见基准下面的代码 [1] )。
在 .NET Framework(FullCLR)中的限制-构建 Windows PowerShell 的基础上:
遇到不可访问的目录(由于缺少权限)而引发例外。您可以捕获异常,但是您不能继续枚举;也就是说,您不能完全枚举您可以 访问的所有项目,而忽略了那些您不能访问的项目。
总是包含隐藏的项目。
通过递归枚举,始终会遵循目录的符号链接/结点。
相比之下,跨平台的.NET Core 框架自v2.1 开始-在其上 PowerShell Core 是内置的-通过EnumerationOptions
选项克服了这些限制-有关示例,请参见this answer。
请注意,您也可以通过相关的[System.IO.DirectoryInfo]
类型执行枚举-与Get-ChildItem
类似-返回 rich objects 而不是仅仅路径字符串,为通用处理留出了很多空间;例如,要获取所有文件大小的数组(属性.Length
,隐式应用于每个文件对象):
([System.IO.DirectoryInfo] $somePath).EnumerateFiles('*STB*', 'AllDirectories').Length
解决这些限制并且仍然相当快的 PowerShell本地解决方案是将Get-ChildItem
与 -Filter
参数一起使用< / strong>。
(Get-ChildItem -LiteralPath $somePath -Filter *STB* -Recurse -File).Count
默认情况下,排除了隐藏的项目;添加-Force
以包括它们。
要忽略权限问题,请添加-ErrorAction SilentlyContinue
或-ErrorAction Ignore
; SilentlyContinue
的优点是您以后可以检查$Error
集合以确定发生的特定错误,从而确保这些错误确实仅源于权限问题。
$env:USERPROFILE\Cookies
。在 Windows PowerShell 中,不幸的是Get-ChildItem -Recurse
跟随符号链接/结点到目录;更明智的是,PowerShell Core 默认情况下不会 ,并通过-FollowSymlink
提供 opt-in 。
与基于[System.IO.DirectoryInfo]
的解决方案类似,Get-ChildItem
输出丰富的对象([System.IO.FileInfo]
/ [System.IO.DirectoryInfo]
),描述每个枚举的文件,系统项,允许进行通用处理。
请注意,虽然您也可以将通配符传递给-Path
(隐含的第一个位置参数)和-Include
(如TobyU's answer),但它仅是{{1 }}提供
由于在源头过滤了(文件系统驱动程序),因此速度显着提高 ,因此PowerShell仅接收已过滤的结果; 相反,-Filter
/ -Path
必须首先枚举所有内容,然后再匹配通配符模式。 [2]
注意事项-Include
的使用:
-Filter
),并且具有遗留的古怪之处-请参见this answer。*[0-9]
支持多个(作为数组)。也就是说,-Include
处理通配符的方式与-Filter
的{{1}}相同。
最后,为了完整起见,您可以基于 cmd.exe
的{{1}}命令改编MC ND's helpful answer以在PowerShell中使用,从而简化了事情:
dir
PowerShell将外部程序的stdout输出捕获为一行行,您可以简单地使用cmd.exe
(或dir
)属性查询其元素计数。
也就是说,根据过滤方案的不同,该可能会或可能不会比PowerShell自己的(cmd /c dir /s /b /a-d "$somePath/*STB*").Count
更快。还应注意,.Count
只能返回路径字符串,而.Length
返回的富对象可以查询其属性。
注意事项Get-ChildItem -Filter
的使用:
dir /s
排除目录,即仅报告文件,但还包括隐藏的文件,Get-ChildItem
默认情况下不执行。
dir
也总是进入隐藏目录; /a-d
(基于属性的)过滤器仅应用于枚举的 leaf 项目(在这种情况下仅应用于 files )。
dir
总是跟随符号链接/结点到其他目录(假设它具有必要的权限-请参阅下一点)。
dir /s
如果由于缺少权限而无法枚举其内容,则安静地忽略目录或目录的符号链接/联结-尽管这在上述特定情况下很有用隐藏的系统联结(您可以使用/a
找到它们),这可能会导致您错过您要枚举的目录的内容,但不能真正缺少权限,因为dir /s
不会表明此类内容甚至存在(emem)(如果您直接 定位无法访问的目录,则会误导dir /s
错误消息,并且退出代码设置为cmd /c dir C:\ /s /ashl
)。
性能比较:
为了简单起见,以下测试使用假定在所有系统上都存在的相当大的目录树dir /s
来比较纯枚举性能不进行过滤。也就是说,很容易调整测试以比较过滤性能。
测试是从PowerShell运行的,这意味着通过为File Not Found
创建子进程以调用1
会引入一些开销,尽管(a)开销应该相对较大低,(b)更大的一点是,考虑到与c:\windows\winsxs
相比,PowerShell的优越性,保留在PowerShell领域是值得的。
测试使用的cmd.exe
功能可以从this Gist下载,默认情况下平均运行10次。
dir /s
在装有Microsoft Windows 10 Pro(64位;版本1803,操作系统内部版本:17134.523)上的Windows PowerShell v5.1.17134.407的单核VMWare Fusion VM上,我得到以下计时,从最快到最慢(滚动到有权查看cmd.exe
列以显示相对效果)
Time-Command
有趣的是,{<1>}和# Warm up the filesystem cache for the target dir.,
# both from PowerShell and cmd.exe, to be safe.
gci 'c:\windows\winsxs' -rec >$null; cmd /c dir /s 'c:\windows\winsxs' >$null
Time-Command `
{ @([System.IO.Directory]::EnumerateFiles('c:\windows\winsxs', '*', 'AllDirectories')).Count },
{ (Get-ChildItem -Force -Recurse -File 'c:\windows\winsxs').Count },
{ (cmd /c dir /s /b /a-d 'c:\windows\winsxs').Count },
{ cmd /c 'dir /s /b /a-d c:\windows\winsxs | find /c /v """"' }
解决方案在PowerShell Core 中均显着提高,而PowerShell Core 在.NET Core(自PowerShell Core 6.2.0- Preview.4,.NET Core 2.1):
Factor
[1] Command Secs (10-run avg.) TimeSpan Factor
------- ------------------ -------- ------
@([System.IO.Directory]::EnumerateFiles('c:\windows\winsxs', '*', 'AllDirectories')).Count 11.016 00:00:11.0158660 1.00
(cmd /c dir /s /b /a-d 'c:\windows\winsxs').Count 15.128 00:00:15.1277635 1.37
cmd /c 'dir /s /b /a-d c:\windows\winsxs | find /c /v """"' 16.334 00:00:16.3343607 1.48
(Get-ChildItem -Force -Recurse -File 'c:\windows\winsxs').Count 24.525 00:00:24.5254979 2.23
在本质上无疑比[System.IO.Directory]::EnumerateFiles()
解决方案要快。在我的测试中(请参见上面的“性能比较:”部分),Get-ChildItem
也胜过Command Secs (10-run avg.) TimeSpan Factor
------- ------------------ -------- ------
@([System.IO.Directory]::EnumerateFiles('c:\windows\winsxs', '*', 'AllDirectories')).Count 5.094 00:00:05.0940364 1.00
(cmd /c dir /s /b /a-d 'c:\windows\winsxs').Count 12.961 00:00:12.9613440 2.54
cmd /c 'dir /s /b /a-d c:\windows\winsxs | find /c /v """"' 14.999 00:00:14.9992965 2.94
(Get-ChildItem -Force -Recurse -File 'c:\windows\winsxs').Count 16.736 00:00:16.7357536 3.29
,在Windows PowerShell中稍胜一筹,在PowerShell Core中也是如此,但others report different findings则胜过[System.IO.Directory]::EnumerateFiles()
。就是说,找到最快的解决方案不是唯一的考虑因素,特别是如果需要的不仅仅是 counting 个文件,并且枚举必须健壮。这个答案讨论了各种解决方案的权衡。
[2]实际上,由于自Windows PowerShell v5.1 / PowerShell Core 6.2.0-preview.4起实施效率低下,实际上使用Get-ChildItem
和[System.IO.Directory]::EnumerateFiles()
比使用未过滤的cmd /c dir /s
和使用-Path
的附加流水线段要慢,如OP中所述-请参见this GitHub issue。
答案 3 :(得分:1)
我的猜测是这要快得多:
$path = 'Fill_in_path_here'
@([System.IO.Directory]::EnumerateFiles($path, '*STB*', 'AllDirectories')).Count
如果您不想递归子文件夹,请将'AllDirectories'
更改为'TopDirectoryOnly'
答案 4 :(得分:1)
我宁愿使用PowerShell,因为它是功能更强大的工具。您可以尝试一下.bat文件脚本。
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET /A "N=0"
FOR /F "delims=" %%f IN ('DIR /S /B /A:-D "C:\path\to\files\*STB*"') DO (SET /A "N=!N!+1")
ECHO There are !N! files.
答案 5 :(得分:-1)
摘要
P/VM - OS - PS Ver - Files - Winner - Faster By % Seconds - Winner FPS - Loser FPS (Files Per Second)
---- - ----------- - ------ - ------ - ------ - ------------------- - ---------- - ----------------------------
PM - Win 7 - 5.1.1 - 87894 - SysIO - 9% (0.29s) - 27,237 FPS - 24,970 FPS
PM - Win 2012 - 5.1.1 - 114968 - MCND - 8% (0.38s) - 25,142 FPS - 23,226 FPS
VM - Win 2012 - 5.1.1 - 99312 - MCND - 34% (1.57s) - 21,265 FPS - 15,890 FPS
PM - Win 2016 - 5.1.1 - 102812 - SysIO - 2% (0.12s) - 20,142 FPS - 19,658 FPS
VM - Win 2012 R2 - 4.0 - 98396 - MCND - 29-34% (1.56-1.71s) - 19,787 FPS - 14,717 FPS
PM - Win 2008 R2 - 5.0.1 - 46557 - MCND - 13-17% (0.33-0.44s) - 18,926 FPS - 16,088 FPS
VM - Win 2012 R2 - 4.0 - 90906 - MCND - 22% (1.25s) - 16,772 FPS - 13,629 FPS
-我在评论中向MK解释了\ cookies目录和其他此类目录是故意不可遍历的,因此您不会重复计算其中包含的文件。
MK在他的MAC OS上运行的VMWare融合上运行的测试远没有定论,并且显示执行时间非常慢,这使我立即得知它们是奇怪的结果。
此外,我无法执行MK编写的命令并无法接收文件夹中文件数量的结果,因此我在测试中包含了一个代码段,该代码段显示了所使用的所有方法均能给出正确的结果。 / p>
奇怪的是,一个用于MCND命令的.count方法似乎在我的win7系统上产生了非常有偏见的结果,与任何其他系统都非常不同,并且在我发布的初始运行中非常慢(慢5倍),并且将来变化最大我尝试过的跑步。
但是我认为这是由于负载所致,如果我不愿意发布更多内容,则计划删除这些结果,但是其余大多数系统与结果非常相似,我认为如果不这样做,它们看起来可能是多余的来自完全不同的系统。
$MaxRuns=1000
$Root_Dir="c:\windows\winsxs"
$Results_SysIO=@()
$Results_MCND1=@()
$Results_MCND2=@()
$Results_MCND3=@()
$Results_Meta=@()
FOR ($j=1; $j -le $MaxRuns; $j++) {
Write-Progress -Activity "Testing Mthods for $MaxRuns Runs" -Status "Progress: $($j/$MaxRuns*100)% -- Run $j of $MaxRuns" -PercentComplete ($j/$MaxRuns*100)
# Tests SysIO: @([System.IO.Directory]::EnumerateFiles($Root_Dir, '*', 'AllDirectories')).Count
$Results_SysIO+=Measure-Command { @([System.IO.Directory]::EnumerateFiles($Root_Dir, '*', 'AllDirectories')).Count }
sleep -milliseconds 500
# Tests MCND1 CMD Script: DIR "%~1" /s /a-d ^| FIND /I /V "" | find /c /v ""
$Results_MCND1+=Measure-Command {C:\Admin\TestMCNDFindFiles1.cmd $Root_Dir}
sleep -milliseconds 500
# Tests MCND2 CMD Count: {cmd /c 'dir /s /b /a-d $Root_Dir | find /c /v """"'}
$Results_MCND2+=Measure-Command {cmd /c `"dir /s /b /a-d $Root_Dir `| find /c /v `"`"`"`"`"}
sleep -milliseconds 500
# Tests MCND3 PS Count (cmd /c dir /s /b /a-d $Root_Dir).Count
$Results_MCND3+=Measure-Command {(cmd /c dir /s /b /a-d $Root_Dir).Count}
sleep -milliseconds 500
}
$CPU=Get-WmiObject Win32_Processor
""
"CPU: $($($CPU.name).count)x $($CPU.name | select -first 1) - Windows: $($(Get-WmiObject Win32_OperatingSystem).Version) - PS Version: $($PSVersionTable.PSVersion)"
ForEach ($Name in "SysIO","MCND1","MCND2","MCND3") {
$Results_Meta+=[PSCustomObject]@{
Method=$Name
Min=$($($(Get-Variable -Name "Results_$Name" -valueOnly).TotalSeconds|Measure-Object -Minimum).Minimum)
Max=$($($(Get-Variable -Name "Results_$Name" -valueOnly).TotalSeconds|Measure-Object -Maximum).Maximum)
Avg=$($($(Get-Variable -Name "Results_$Name" -valueOnly).TotalSeconds|Measure-Object -Average).Average)
}
}
$Results_Meta | sort Avg | select Method,Min,Max,Avg,@{N="Factor";e={("{0:f2}" -f (([math]::Round($_.Avg / $($Results_Meta | sort Avg | select Avg)[0].avg,2,1))))}}|FT
Time-Command `
{cmd /c `"dir /s /b /a-d $Root_Dir `| find /c /v `"`"`"`"`"},
{C:\Admin\TestMCNDFindFiles1.cmd $Root_Dir},
{@([System.IO.Directory]::EnumerateFiles($Root_Dir, '*', 'AllDirectories')).Count},
{(cmd /c dir /s /b /a-d $Root_Dir).Count} $MaxRuns `
""
"Results of Commands - (How many Files were in that Folder?):"
[PSCustomObject]@{
SysIO=$(&{ @([System.IO.Directory]::EnumerateFiles($Root_Dir, '*', 'AllDirectories')).Count })
MCND1=$(&{C:\Admin\TestMCNDFindFiles1.cmd $Root_Dir})
MCND2=$(&{cmd /c `"dir /s /b /a-d $Root_Dir `| find /c /v `"`"`"`"`"})
MCND3=$(&{(cmd /c dir /s /b /a-d $Root_Dir).Count})
}
我还没有从其他系统中收集其他运行,但是Win7结果并不一致,因此当我有更多要从其他系统添加到列表中时,我可能会删除它们。
详细调查结果
物理Win 7便携式计算机-87894文件-失败者:MCND为9%(.29s)较慢-(获奖方法:27,237 FPS) –在其他系统上重新运行时结果不一致是。
CPU:1个Intel(R)CoreTM i5-4310U CPU @ 2.00GHz-Windows:6.1.7601-PS版本:5.1.14409.1012
CPU: 1x Intel(R) Core(TM) i5-4310U CPU @ 2.00GHz - Windows: 6.1.7601 - PS Version: 5.1.14409.1012
Method Min Max Avg Factor
------ --- --- --- ------
SysIO 3.0190345 6.1287085 3.2174689013 1.00
MCND1 3.3655209 5.9024033 3.5490564665 1.10
MCND3 3.5865989 7.5816207 3.8515160528 1.20
MCND2 3.7542295 7.5619913 3.9471552743 1.23
3.2174689013
0.0000366062
Command Secs (1000-run avg.) TimeSpan Factor
------- -------------------- -------- ------
@([System.IO.Directory]::EnumerateFiles($Root_Dir, '*', 'AllDirectories')).Count 3.227 00:00:03.2271969 1.00
C:\Admin\TestMCNDFindFiles1.cmd $Root_Dir 3.518 00:00:03.5178810 1.09
cmd /c `"dir /s /b /a-d $Root_Dir `| find /c /v `"`"`"`"`" 3.911 00:00:03.9106284 1.21
(cmd /c dir /s /b /a-d $Root_Dir).Count 16.338 00:00:16.3377823 5.06
Results of Commands - (How many Files were in that Folder?):
SysIO MCND1 MCND2 MCND3
----- ----- ----- -----
87894 87894 87894 87894
物理Win 2012桌面-114968个文件-失败者:SysIO慢了8%(.38s)-(获奖方式:25,142 FPS)
CPU:1个Intel(R)Xeon(R)CPU E5-2407 0 @ 2.20GHz-Windows:6.3.9600-PS版本:5.1.14409.1012
CPU: 1x Intel(R) Xeon(R) CPU E5-2407 0 @ 2.20GHz - Windows: 6.3.9600 - PS Version: 5.1.14409.1012
Method Min Max Avg Factor
------ --- --- --- ------
MCND1 4.4957173 8.6672112 4.5726616326 1.00
MCND3 4.6815509 18.6689706 4.7940769407 1.05
SysIO 4.8789948 5.1625618 4.9476786004 1.08
MCND2 5.0404912 7.2557797 5.0854683543 1.11
Command Secs (1000-run avg.) TimeSpan Factor
------- -------------------- -------- ------
C:\Admin\TestMCNDFindFiles1.cmd $Root_Dir 4.542 00:00:04.5418653 1.00
(cmd /c dir /s /b /a-d $Root_Dir).Count 4.772 00:00:04.7719769 1.05
@([System.IO.Directory]::EnumerateFiles($Root_Dir, '*', 'AllDirectories')).Count 4.933 00:00:04.9330404 1.09
cmd /c `"dir /s /b /a-d $Root_Dir `| find /c /v `"`"`"`"`" 5.086 00:00:05.0855891 1.12
Results of Commands - (How many Files were in that Folder?):
SysIO MCND1 MCND2 MCND3
----- ----- ----- -----
114968 114968 114968 114968
VM Win 2012 Server-99312文件-失败者:SysIO慢34%(1.57s)-(获奖方法:21,265 FPS)
CPU:4个Intel(R)Xeon(R)CPU E7-2850 @ 2.00GHz-Windows:6.3.9600-PS版本:5.1.14409.1005
CPU: 4x Intel(R) Xeon(R) CPU E7- 2850 @ 2.00GHz - Windows: 6.3.9600 - PS Version: 5.1.14409.1005
Method Min Max Avg Factor
------ --- --- --- ------
MCND1 4.5563908 5.2656374 4.6812307177 1.00
MCND3 4.6696518 5.3846231 4.9064852835 1.05
MCND2 5.0559205 5.5583717 5.15425442679999 1.10
SysIO 6.036294 6.7952711 6.254027334 1.34
Command Secs (1000-run avg.) TimeSpan Factor
------- -------------------- -------- ------
C:\Admin\TestMCNDFindFiles1.cmd $Root_Dir 4.669 00:00:04.6689048 1.00
(cmd /c dir /s /b /a-d $Root_Dir).Count 4.934 00:00:04.9336925 1.06
cmd /c `"dir /s /b /a-d $Root_Dir `| find /c /v `"`"`"`"`" 5.153 00:00:05.1532386 1.10
@([System.IO.Directory]::EnumerateFiles($Root_Dir, '*', 'AllDirectories')).Count 6.239 00:00:06.2389727 1.34
Results of Commands - (How many Files were in that Folder?):
SysIO MCND1 MCND2 MCND3
----- ----- ----- -----
99312 99312 99312 99312
物理Win 2016 Server-102812文件-失败者:MCND为2%(0.12s)较慢-(获奖方法:20,142 FPS)
CPU:2个Intel®Xeon(R)CPU E5-2667 v4 @ 3.20GHz-Windows:10.0.14393-PS版本:5.1.14393.2608
CPU: 2x Intel(R) Xeon(R) CPU E5-2667 v4 @ 3.20GHz - Windows: 10.0.14393 - PS Version: 5.1.14393.2608
Method Min Max Avg Factor
------ --- --- --- ------
SysIO 5.0414178 5.5279055 5.1043614001 1.00
MCND3 5.0468476 5.4673033 5.23160342460001 1.02
MCND1 5.1649438 5.6745749 5.26664923669999 1.03
MCND2 5.3280266 5.7989287 5.3747728434 1.05
Command Secs (1000-run avg.) TimeSpan Factor
------- -------------------- -------- ------
@([System.IO.Directory]::EnumerateFiles($Root_Dir, '*', 'AllDirectories')).Count 5.156 00:00:05.1559628 1.00
(cmd /c dir /s /b /a-d $Root_Dir).Count 5.256 00:00:05.2556244 1.02
C:\Admin\TestMCNDFindFiles1.cmd $Root_Dir 5.272 00:00:05.2722298 1.02
cmd /c `"dir /s /b /a-d $Root_Dir `| find /c /v `"`"`"`"`" 5.375 00:00:05.3747287 1.04
Results of Commands - (How many Files were in that Folder?):
SysIO MCND1 MCND2 MCND3
----- ----- ----- -----
102812 102812 102812 102812
VM Win 2012 R2服务器-98396文件-失败者:SysIO 29-34%(1.56-1.71s)较慢-(获奖方法:19,787 FPS)
CPU:2个Intel(R)Xeon(R)CPU E7-2850 @ 2.00GHz-Windows:6.3.90600-PS版本:4.0
CPU: 2x Intel(R) Xeon(R) CPU E7- 2850 @ 2.00GHz - Windows: 6.3.9600 - PS Version: 4.0
Method Min Max Avg Factor
------ --- --- --- ------
MCND1 4.7007419 5.9567352 4.97285509330001 1.00
MCND2 5.2086999 6.7678172 5.4849721167 1.10
MCND3 5.0116501 8.7416729 5.71391797679999 1.15
SysIO 6.2400687 7.414201 6.6862204345 1.34
Command Secs (1000-run avg.) TimeSpan Factor
------- -------------------- -------- ------
C:\Admin\TestMCNDFindFiles1.cmd $Root... 5.359 00:00:05.3592304 1.00
cmd /c `"dir /s /b /a-d $Root_Dir `| ... 5.711 00:00:05.7107644 1.07
(cmd /c dir /s /b /a-d $Root_Dir).Count 6.173 00:00:06.1728413 1.15
@([System.IO.Directory]::EnumerateFil... 6.921 00:00:06.9213833 1.29
Results of Commands - (How many Files were in that Folder?):
SysIO MCND1 MCND2 MCND3
----- ----- ----- -----
98396 98396 98396 98396
物理Win 2008 R2服务器-46557个文件-失败者:SysIO 13-17%(0.33-0.44s)较慢-(获奖方法:18,926 FPS)
CPU:2个Intel(R)Xeon(R)CPU 5160 @ 3.00GHz-Windows:6.1.7601-PS版本:5.0.10586.117
CPU: 2x Intel(R) Xeon(R) CPU 5160 @ 3.00GHz - Windows: 6.1.7601 - PS Version: 5.0.10586.117
Method Min Max Avg Factor
------ --- --- --- ------
MCND3 2.2370018 2.8176253 2.4653543378 1.00
MCND1 2.4063578 2.8108379 2.5373719772 1.03
MCND2 2.5953631 2.9085969 2.7312907064 1.11
SysIO 2.7207865 30.335369 2.8940406601 1.17
Command Secs (1000-run avg.) TimeSpan Factor
------- -------------------- -------- ------
(cmd /c dir /s /b /a-d $Root_Dir).Count 2.500 00:00:02.5001477 1.00
C:\Admin\TestMCNDFindFiles1.cmd $Root_Dir 2.528 00:00:02.5275259 1.01
cmd /c `"dir /s /b /a-d $Root_Dir `| find /c /v `"`"`"`"`" 2.726 00:00:02.7259539 1.09
@([System.IO.Directory]::EnumerateFiles($Root_Dir, '*', 'AllDirectories')).Count 2.826 00:00:02.8259697 1.13
Results of Commands - (How many Files were in that Folder?):
SysIO MCND1 MCND2 MCND3
----- ----- ----- -----
46557 46557 46557 46557
VMWare Win 2012 R2 Server-90906文件-失败者:SysIO 23%(1.25s)较慢-(获奖方法:15,722 FPS)
CPU:4倍Intel(R)Xeon(R)CPU E7-2850 @ 2.00GHz-Windows:6.3.90600-PS版本:4.0
CPU: 4x Intel(R) Xeon(R) CPU E7- 2850 @ 2.00GHz - Windows: 6.3.9600 - PS Version: 4.0
Method Min Max Avg Factor
------ --- --- --- ------
MCND1 5.0516057 6.4537866 5.423386317 1.00
MCND3 5.3297157 7.1722929 5.9030135773 1.09
MCND2 5.5460548 7.0356455 5.931334868 1.09
SysIO 6.2059999 19.5145373 6.6747122712 1.23
Command Secs (1000-run avg.) TimeSpan Factor
------- -------------------- -------- ------
C:\Admin\TestMCNDFindFiles1.cmd $Root... 5.409 00:00:05.4092046 1.00
(cmd /c dir /s /b /a-d $Root_Dir).Count 5.936 00:00:05.9358832 1.10
cmd /c `"dir /s /b /a-d $Root_Dir `| ... 6.069 00:00:06.0689899 1.12
@([System.IO.Directory]::EnumerateFil... 6.557 00:00:06.5571859 1.21
Results of Commands - (How many Files were in that Folder?):
SysIO MCND1 MCND2 MCND3
----- ----- ----- -----
90906 90906 90906 90906