PowerShell統(tǒng)計文件夾下文件個數(shù)的方法
計算一個文件夾下面的文件個數(shù)是一件很容易的事情,但看到這篇文章之前,還從來沒有想過計算一下文件個數(shù)還有這么多學(xué)問在里頭。
我們這里有兩種方法來計算文件夾下的文件個數(shù),下面分別展示詳細的代碼來計算windows目錄下的文件個數(shù)。
1、使用Get-ChildItem來得到所有的子文件夾和文件,然后再選取出所有的文件,再使用Measure-Object,最后再從Measure-Object的結(jié)果中使用Select-Object的ExpandProperty參數(shù)來計算出個數(shù)。聽起來就有點復(fù)雜,下面看看代碼吧。
Get-ChildItem -Path $env:windir -Force |
Where-Object { $_.PSIsContainer -eq $false } |
Measure-Object |
Select-Object -ExpandProperty Count
2、使用.NET自帶的方法來完成。[System.IO.Directory]::GetFiles(string dir)這種使用方法大家不默生吧,不過沒關(guān)系,懂.NET的朋友們看一眼就懂。當然反過來,如果不懂.NET的朋友也沒有關(guān)系,見到一個有用的就學(xué)一個,也沒有必要為了更好的使用PowerShell就去把.NET學(xué)一遍——雖然這也是一件很有意義的事。
[System.IO.Directory]::GetFiles($env:windir).Count
這段代碼要著重說一下,據(jù)磚家研究,它的執(zhí)行速度是第一種方法的20倍。好了,小編閉嘴了。
下面再附帶兩個循環(huán)讀取一個文件夾下的所有子文件夾下的、所有的文件個數(shù)的代碼:
Get-ChildItem -Path $env:windir -Force -Recurse -ErrorAction SilentlyContinue |
Where-Object { $_.PSIsContainer -eq $false } |
Measure-Object |
Select-Object -ExpandProperty Count
[System.IO.Directory]::GetFiles($env:windir, '*', 'AllDirectories').Count
同樣的,.NET的方法效率要高得多。當然.NET的也不是一點弊端都沒有,那就是如果在執(zhí)行過程中遇到?jīng)]有權(quán)限訪問的文件,程序就會中斷。而使用Get-ChildItem方法,它有一個-ErrorAction參數(shù),可以對出錯時進行SilentlyContinue處理(忽略,繼續(xù)),這樣就會中斷了。
最后兩種方法怎么取舍呢,小編因為是年輕人,喜歡效率高的。但有時候也沒有辦法,為了讓系統(tǒng)更穩(wěn)定,小編也不得不選擇更優(yōu)雅的——雖然它慢一點。
相關(guān)文章
PowerShell小技巧實現(xiàn)IE Web自動化
使用IE的COM對象來完成簡單的Web自動化測試,是最小巧和廉價的Web自動化測試了,因為它不用引入第三方插件或者工具。2014-09-09類似rpm包管理器的Windows Installer PowerShell Module簡介
前兩篇文章分享了使用PowerShell安裝Window程序的一些技巧。但是都是基于兼容已有命令行的調(diào)用。今天分享一個第三方組件,讓你直接可以使用Cmdlet命令來查詢,安裝,修復(fù)Windows程序2014-05-05powershell解決win10開始菜單和通知中心無法打開
這篇文章主要介紹了powershell解決win10開始菜單和通知中心無法打開的相關(guān)資料,需要的朋友可以參考下2015-10-10Powershell使用OpenFileDialog打開文件示例
這篇文章主要介紹了Powershell使用OpenFileDialog打開文件示例,本文直接給出示例代碼,需要的朋友可以參考下2015-03-03PowerShell中執(zhí)行Javascript的方法示例
這篇文章主要介紹了PowerShell中執(zhí)行Javascript的方法示例,特殊場景下可能會用到這個技巧,需要的朋友可以參考下2014-07-07PowerShell使用Remove-Item命令刪除文件、注冊表項介紹
這篇文章主要介紹了PowerShell使用Remove-Item命令刪除文件、注冊表項介紹,另外Remove-Item的別名也有很多,需要的朋友可以參考下2014-08-08