Board logo

标题: [原创代码] PowerShell对于全盘搜文件的一些细节 [打印本页]

作者: Nsqs    时间: 2023-9-4 17:48     标题: PowerShell对于全盘搜文件的一些细节

本帖最后由 Nsqs 于 2023-9-4 17:52 编辑

例1:
  1. $t=[System.Environment]::TickCount
  2. [System.Environment]::GetLogicalDrives()|%{
  3.     try{
  4.         dir "$_`qq.exe" -Recurse|%{
  5.             "已找到(用时 $((([System.Environment]::TickCount-$t)/1000).toString('0.00s'))):`r`n$($_.Name)"
  6.             if($_.Name -match 'qq'){break}
  7.         }
  8.     }catch{}
  9. }
复制代码
你们可以测试一下,加-File和不加-File 的时间不一样,不加-File反而速度会提升2倍

另一种调用bat的dir测试中速度直接再进一步提升1倍!
例2:
  1. $t=[System.Environment]::TickCount
  2. [System.Environment]::GetLogicalDrives()|%{
  3.     try{
  4.         cmd /c dir /s/b "$_`qq.exe" 2`>nul|%{
  5.             "已找到(用时 $((([System.Environment]::TickCount-$t)/1000).toString('0.00s'))):`r`n$_"
  6.             if($_ -match 'qq'){break}
  7.         }
  8.     }catch{}
  9. }
复制代码
先不看例2,只看例1的话,不知道例1加File与不加File到底是个什么逻辑,按写代码的逻辑来说我的想法是加了-File应该只搜文件,而不加-File应该会搜文件与文件夹

但是细细一想可能加了参数后,在dir里会多一个条件去处理,所以会拖慢速度..只能这么解释了

例1:
测试结果加 File:大概160秒 不加File 95秒

例2:
测试结果 45秒
作者: Nsqs    时间: 2023-9-5 10:57

本帖最后由 Nsqs 于 2023-9-5 10:58 编辑

对于例1的输出结果对比:
  1. (Measure-Command {
  2. dir d:\qq.exe -File -Recurse
  3. }).TotalSeconds
复制代码
30.9305557
  1. (Measure-Command {
  2. dir d:\qq.exe -Recurse
  3. }).TotalSeconds
复制代码
15.919878




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2