欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PowerShell腳本進(jìn)階統(tǒng)計(jì)目錄大小并包含隱藏文件

 更新時(shí)間:2025年08月12日 16:24:58   作者:碼農(nóng)阿豪@新空間  
在日常系統(tǒng)管理和文件整理工作中,我們經(jīng)常需要統(tǒng)計(jì)某個(gè)目錄的占用空間,本文將詳細(xì)介紹如何使用 PowerShell 遞歸計(jì)算文件夾大小,并確保包含隱藏文件,感興趣的可以了解下

1. 引言

在日常系統(tǒng)管理和文件整理工作中,我們經(jīng)常需要統(tǒng)計(jì)某個(gè)目錄(及其子目錄)的占用空間。PowerShell 提供了強(qiáng)大的文件遍歷和計(jì)算能力,但默認(rèn)情況下,它不會(huì)處理隱藏文件或系統(tǒng)文件。本文將詳細(xì)介紹如何使用 PowerShell 遞歸計(jì)算文件夾大小,并確保包含隱藏文件。

2. PowerShell 基礎(chǔ):Get-ChildItem和文件統(tǒng)計(jì)

2.1Get-ChildItem基本用法

Get-ChildItem(別名 dirls)是 PowerShell 中用于列出文件和目錄的核心命令?;菊Z(yǔ)法:

Get-ChildItem -Path "C:\TargetFolder"
  • -Path:指定目標(biāo)路徑(默認(rèn)當(dāng)前目錄)
  • -Directory:僅返回目錄
  • -File:僅返回文件
  • -Recurse:遞歸遍歷子目錄

2.2 計(jì)算文件夾大小

要計(jì)算文件夾大小,我們需要:

  • 遍歷所有文件
  • 累加文件大?。?code>Length 屬性)
  • 轉(zhuǎn)換為合適的單位(如 MB、GB)

示例:計(jì)算單個(gè)文件夾大小

$folderPath = "C:\Example"
$files = Get-ChildItem -Path $folderPath -Recurse -File
$totalSize = ($files | Measure-Object -Property Length -Sum).Sum / 1MB
Write-Host "Total Size: $($totalSize.ToString('0.00')) MB"
  • Measure-Object -Sum 計(jì)算總和
  • / 1MB 轉(zhuǎn)換為 MB(1MB = 1024 * 1024 字節(jié))

3. 隱藏文件的處理

3.1 什么是隱藏文件和系統(tǒng)文件

  • 隱藏文件:在 Windows 中,文件或目錄可以設(shè)置 Hidden 屬性(如 .git 目錄)。
  • 系統(tǒng)文件:通常是操作系統(tǒng)關(guān)鍵文件(如 pagefile.sys)。

默認(rèn)情況下,Get-ChildItem 不會(huì)返回隱藏或系統(tǒng)文件。

3.2-Force參數(shù)的作用

-Force 參數(shù)讓 Get-ChildItem 返回 所有 文件,包括:

  • 隱藏文件
  • 系統(tǒng)文件
  • 只讀文件

示例:列出所有文件(含隱藏文件)

Get-ChildItem -Force

4. 優(yōu)化腳本:遞歸計(jì)算并包含隱藏文件

4.1 原始腳本分析

最初的腳本僅計(jì)算非隱藏目錄和文件:

Get-ChildItem -Directory | ForEach-Object {
    $size = (Get-ChildItem -Path $_.FullName -Recurse -File | Measure-Object -Property Length -Sum).Sum / 1MB
    [PSCustomObject]@{
        Folder = $_.Name
        Size_MB = [math]::Round($size, 2)
    }
} | Sort-Object Size_MB -Descending

問(wèn)題:

  • 不會(huì)統(tǒng)計(jì)隱藏文件夾(如 AppData
  • 不會(huì)統(tǒng)計(jì)隱藏文件(如 .gitignore

4.2 改進(jìn)后的腳本(支持隱藏文件)

添加 -Force 參數(shù),確保包含隱藏文件:

Get-ChildItem -Directory -Force | ForEach-Object {
    $size = (Get-ChildItem -Path $_.FullName -Recurse -File -Force | Measure-Object -Property Length -Sum).Sum / 1MB
    [PSCustomObject]@{
        Folder = $_.Name
        Size_MB = [math]::Round($size, 2)
    }
} | Sort-Object Size_MB -Descending

改進(jìn)點(diǎn):

  • Get-ChildItem -Directory -Force:包含隱藏目錄
  • Get-ChildItem -Recurse -File -Force:遞歸計(jì)算所有文件(含隱藏文件)

5. 腳本執(zhí)行優(yōu)化與注意事項(xiàng)

5.1 提高執(zhí)行效率

  • 避免重復(fù)計(jì)算:如果目錄層級(jí)很深,遞歸遍歷可能較慢,可考慮并行計(jì)算(ForEach-Object -Parallel,需 PowerShell 7+)。
  • 限制遞歸深度:使用 -Depth 參數(shù)(如 -Depth 3 僅遍歷 3 層子目錄)。

5.2 處理權(quán)限問(wèn)題

  • 管理員權(quán)限:某些系統(tǒng)目錄(如 C:\Windows)需要管理員權(quán)限才能訪問(wèn)。
  • 錯(cuò)誤處理:使用 -ErrorAction SilentlyContinue 忽略無(wú)權(quán)限訪問(wèn)的目錄。

優(yōu)化后的腳本(帶錯(cuò)誤處理)

Get-ChildItem -Directory -Force -ErrorAction SilentlyContinue | ForEach-Object {
    $size = (Get-ChildItem -Path $_.FullName -Recurse -File -Force -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum).Sum / 1MB
    [PSCustomObject]@{
        Folder = $_.Name
        Size_MB = [math]::Round($size, 2)
    }
} | Sort-Object Size_MB -Descending

6. 完整代碼示例

# 計(jì)算當(dāng)前目錄下所有文件夾大小(含隱藏文件)
$results = Get-ChildItem -Directory -Force -ErrorAction SilentlyContinue | ForEach-Object {
    $size = (Get-ChildItem -Path $_.FullName -Recurse -File -Force -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum).Sum / 1MB
    [PSCustomObject]@{
        Folder = $_.Name
        Size_MB = [math]::Round($size, 2)
    }
} | Sort-Object Size_MB -Descending

# 輸出結(jié)果
$results | Format-Table -AutoSize

# 可選:導(dǎo)出到 CSV
$results | Export-Csv -Path "FolderSizes.csv" -NoTypeInformation

7. 總結(jié)

  • Get-ChildItem -Force 是統(tǒng)計(jì)隱藏文件的關(guān)鍵。
  • 遞歸計(jì)算 適用于文件夾大小統(tǒng)計(jì),但需注意性能問(wèn)題。
  • 錯(cuò)誤處理 可避免因權(quán)限問(wèn)題導(dǎo)致腳本中斷。

通過(guò)本文的優(yōu)化方法,您可以更準(zhǔn)確地計(jì)算文件夾大小,適用于磁盤清理、日志分析等場(chǎng)景。

進(jìn)一步優(yōu)化方向:

  • 使用 Robocopy 進(jìn)行快速統(tǒng)計(jì)(適用于超大型目錄)
  • 采用多線程加速計(jì)算(PowerShell 7+)

到此這篇關(guān)于PowerShell腳本進(jìn)階統(tǒng)計(jì)目錄大小并包含隱藏文件的文章就介紹到這了,更多相關(guān)PowerShell統(tǒng)計(jì)目錄大小內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Windows Powershell 環(huán)境變量

    Windows Powershell 環(huán)境變量

    Windows PowerShell提供了一個(gè)名為euv的盤符,通過(guò)它可以訪問(wèn)傳統(tǒng)的環(huán)境變量。因此,舉個(gè)例子來(lái)說(shuō),Cmd.exe傳統(tǒng)命令行中的%TEMP%變量,在PowerShell中對(duì)應(yīng)的表達(dá)式就是env:\temp。今天我們就來(lái)詳細(xì)的探討下Powershell的環(huán)境變量
    2014-09-09
  • 探索PowerShell(五) PowerShell基礎(chǔ)知識(shí)

    探索PowerShell(五) PowerShell基礎(chǔ)知識(shí)

    在PowerShell中,我們可以輕松的與數(shù)據(jù)、對(duì)象進(jìn)行交互,為了簡(jiǎn)化我們?cè)L問(wèn)外部數(shù)據(jù),PowerShell允許我們像操作驅(qū)動(dòng)器、文件一樣對(duì)數(shù)據(jù)、對(duì)象等進(jìn)行操作
    2012-12-12
  • PowerShell面向?qū)ο缶幊袒A(chǔ)知識(shí)總結(jié)

    PowerShell面向?qū)ο缶幊袒A(chǔ)知識(shí)總結(jié)

    這篇文章主要介紹了PowerShell面向?qū)ο缶幊袒A(chǔ)知識(shí)總結(jié),本文著重講解面向?qū)ο蟮囊恍└拍?又給出了Get-Member命令輸出類的屬性和方法的例子,需要的朋友可以參考下
    2014-08-08
  • PowerShell中定義哈希散列(Hash)和調(diào)用例子

    PowerShell中定義哈希散列(Hash)和調(diào)用例子

    這篇文章主要介紹了PowerShell中定義哈希散列(Hash)和調(diào)用例子,本文介紹在PowerShell中如何創(chuàng)建一個(gè)哈希變量,并且使用哈希變量,需要的朋友可以參考下
    2014-08-08
  • Powershell 之批量獲取文件大小的實(shí)現(xiàn)代碼

    Powershell 之批量獲取文件大小的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Powershell 之批量獲取文件大小的實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2016-11-11
  • PowerShell隱藏不顯示窗口的多種方法

    PowerShell隱藏不顯示窗口的多種方法

    這篇文章主要介紹了PowerShell隱藏不顯示窗口的多種方法,本文講解了啟動(dòng)PowerShell時(shí)隱藏自己的窗口、在PowerShell啟動(dòng)其它進(jìn)程時(shí)隱藏窗口、使用PowerShell隱藏其它進(jìn)程的窗口三種方法,需要的朋友可以參考下
    2015-06-06
  • 簡(jiǎn)單談?wù)凱owerShell 4.0中的新命令

    簡(jiǎn)單談?wù)凱owerShell 4.0中的新命令

    powershell 4.0都出來(lái)那么長(zhǎng)時(shí)間了,相對(duì)于powershell 3.0,它的命令都改變了哪些,有哪些更新呢?下面我們就來(lái)詳細(xì)談?wù)勂渲械?0個(gè)新命令
    2015-09-09
  • PowerShell函數(shù)中的開(kāi)關(guān)參數(shù)介紹和創(chuàng)建實(shí)例

    PowerShell函數(shù)中的開(kāi)關(guān)參數(shù)介紹和創(chuàng)建實(shí)例

    這篇文章主要介紹了PowerShell函數(shù)中的開(kāi)關(guān)參數(shù)介紹和創(chuàng)建實(shí)例,開(kāi)關(guān)參數(shù)顧名思義就是起到一個(gè)開(kāi)關(guān)作用,需要的朋友可以參考下
    2014-07-07
  • PowerShell腳本實(shí)現(xiàn)創(chuàng)建桌面快捷方式的方法

    PowerShell腳本實(shí)現(xiàn)創(chuàng)建桌面快捷方式的方法

    這篇文章主要介紹了PowerShell腳本實(shí)現(xiàn)創(chuàng)建桌面快捷方式的方法,本文通過(guò)調(diào)用WScript腳本組件實(shí)現(xiàn),需要的朋友可以參考下
    2014-08-08
  • Powershell小技巧之系統(tǒng)運(yùn)行時(shí)間

    Powershell小技巧之系統(tǒng)運(yùn)行時(shí)間

    本文主要教你如何使用powershell計(jì)算系統(tǒng)運(yùn)行時(shí)間,其實(shí)很簡(jiǎn)單,因?yàn)閃indows每次啟動(dòng)都有一個(gè)高進(jìn)度計(jì)數(shù)器并且當(dāng)系統(tǒng)運(yùn)行這個(gè)計(jì)數(shù)器將返回一個(gè)毫秒,我們把這個(gè)毫秒計(jì)算下就得到系統(tǒng)運(yùn)行時(shí)間了
    2014-09-09

最新評(píng)論