ابزار رایگان تحلیل حجم پوشه نوشته شده توسط داریوش حقیقی . دانلود رایگان اسکریپت ویندوزی برای بررسی فضای دیسک. تا حالا فکر کردی دقیقاً چی داره فضای هاردت رو پر میکنه؟ ابزار DJH Folder Tree Size Lister یک اسکریپت سبک ویندوزی است که به صورت خودکار کل پوشهها را بررسی کرده و گزارش کامل حجم فایلها و پوشهها را به شکل درختی تولید میکند. با این اسکریپت به راحتی میتونی فایل ها و فولدر های حجیم رو شناسایی کنی و یک بلایی سرشون بیاری.
حل مشکل پر شدن فضای هارد دیسک
در ویندوز معمولاً:
- حجم دقیق پوشهها مشخص نیست
- فایلهای بزرگ داخل زیرپوشهها پنهان هستند
- ابزار داخلی محدود است
- بررسی دستی زمانبر است
- تو سیستم خیلی هامون معلوم نیست اصلا چی به چیه اینقدر همه چی رو ریختیم رو هم!
راه حل هوشمندانه داریوش
با استفاده از این ابزار و اسکریپت سبک و رایگان شما می توانید:
- همه پوشهها را به صورت بازگشتی بررسی میکند
- حجم فایلها و پوشهها را محاسبه میکند
- گزارش درختی ایجاد میکند
- فایل خروجی زماندار تولید میکند
نحوه استفاده
1- فایل bat را از صفحه گیت هاب دانلود و اجرا کنید
2- مسیر پوشه مد نظر خود را به صورت کامل وارد کنید برای مثال C:\Your\Folder
3- منتظر بمانید تا پردازش کامل شود
4- فایل گزارش کامل از محتوای کلیه فایل ها و پوشه ها ایجاد میشود : FileList_YYYYMMDD-HHMMSS.txt
سوالات متداول
این ابزار چیست؟
یک اسکریپت ویندوزی برای تحلیل حجم پوشهها.
آیا رایگان است؟
بله کاملاً رایگان است.
نصب نیاز دارد؟
خیر، فقط اجرا میشود.
روی چه ویندوزی کار میکند؟
ویندوز 7، 10 و 11 و نسخه های ویندوز سرور
آیا فایلها را تغییر میدهد؟
خیر فقط اطلاعات را از روی هارد میخواند و تغییری بر روی اطلاعات شما نمیدهد.
آیا اینترنت لازم دارد؟
خیر کاملاً آفلاین است.
لیست خروجی در کجا ذخیره می شود؟
در همان پوشه اجرا ذخیره میشود.
آیا کد قابل تغییر است؟
بله کد قابل ویرایش است.
سرعت آن چگونه است؟
بسته به حجم پوشه متفاوت است ولی بسیار با سرعت عملیات را انجام میدهد.
چه کسی اسکریپت را نوشته؟
داریوش حقیقی (DJH) با کمک هوش مصنوعی
مشاهده کد و دانلود اسکریپت:
مشاهده و دانلود کد در گیت هابتوضیحات تکمیلی کد:
این اسکریپت یک فایل Batch ویندوز است که ساختار پوشهها و فایلها را بهصورت درختی (Tree) همراه با حجم هر فایل و هر پوشه در یک فایل متنی ذخیره میکند. حالا خط به خط خیلی ساده توضیح میدهم:
بخش اول: تنظیمات اولیه
@echo off
نمایش دستورات داخل CMD را خاموش میکند تا خروجی تمیزتر باشد.
chcp 65001 >nul
کد صفحه را روی UTF-8 تنظیم میکند تا فارسی و کاراکترهای خاص درست نمایش داده شوند.
>nul یعنی پیام اضافی نشان نده.
setlocal enabledelayedexpansion
فعال کردن **Delayed Expansion**
یعنی بتوانیم داخل حلقهها از متغیرها با `!var!` استفاده کنیم (خیلی مهم برای این اسکریپت).
گرفتن مسیر از کاربر
set /p folder="Enter the full folder path to list: "
از کاربر میخواهد مسیر یک پوشه را وارد کند و آن را داخل متغیر `folder` ذخیره میکند.
## بررسی وجود داشتن پوشه
if not exist "%folder%" (
echo Folder does not exist!
pause
exit /b
)
اگر پوشه وجود نداشت:
پیام خطا میدهد
برنامه را نگه میدارد (pause)
از اسکریپت خارج میشود
ساخت نام فایل خروجی با زمان
for /f "tokens=1-6 delims=:-/ " %%a in ("%date% %time%") do (
set timestamp=%%a%%b%%c-%%d%%e%%f
)
این قسمت: تاریخ و ساعت سیستم را میگیرد و آن را تبدیل به یک رشته مثل این میکند:20260618-112530
set output=FileList_!timestamp!.txt
نام فایل خروجی را میسازد مثل:
FileList_20260618-112530.txt
—
## نوشتن شروع فایل
echo Listing for %folder% > "%output%"
echo. >> "%output%"
خط اول: عنوان داخل فایل مینویسد
خط دوم: یک خط خالی اضافه میکند
شروع اجرای تابع اصلی
call :ListFolder "%folder%" 0
تابع ListFolder را صدا میزند:
مسیر پوشه
سطح عمق (0 یعنی ریشه)
پایان برنامه
echo Done! Output saved to "%output%"
pause
exit /b
پیام پایان
توقف برای دیدن نتیجه
خروج از اسکریپت
بخش اصلی: تابع ListFolder
این قسمت مهمترین بخش است (بازگشتی / Recursive)
تعریف تابع
:ListFolder
یعنی شروع تابع
گرفتن ورودیها
set “currentFolder=%~1”
set “level=%~2”
%~1 = مسیر پوشه فعلی
%~2 = سطح عمق (برای تورفتگی)
ساخت تورفتگی (Indentation)
set "indent="
for /l %%i in (1,1,%level%) do set "indent=!indent! "
اگر سطح 3 باشد:
(3 تا فاصله 4تایی)
برای ساخت شکل درختی استفاده میشود.
مقدار اولیه حجم پوشه
set /a folderSize=0
یعنی حجم کل پوشه صفر شروع میشود.
لیست کردن فایلها
for %%F in ("%currentFolder%\*") do (
تمام فایلها و پوشهها را بررسی میکند.
شرط اینکه فایل باشد (نه پوشه)
if not exist "%%F\" (
اگر مسیر \ آخر نداشت یعنی فایل است.
گرفتن سایز فایل
set "size=%%~zF"
حجم فایل بر حسب بایت
جمع کردن حجم
set /a folderSize+=size
اضافه کردن به مجموع پوشه
تبدیل به مگابایت
set /a mb=size/1048576
اگر کمتر از 1MB بود
if !mb! lss 1 set mb=1
حداقل 1MB نمایش داده شود
نوشتن فایل در خروجی
echo !indent! %%~nxF [!mb! MB] >> "%output%"
مثلاً:
file.txt [2 MB]
رفتن داخل پوشهها (Recursive)
for /d %%D in ("%currentFolder%\*") do (
فقط پوشهها را میگیرد
اجرای دوباره تابع
call :ListFolder "%%D" !level!+1
یعنی:
وارد پوشه جدید شو
سطح را یکی زیاد کن
جمع کردن حجم زیرپوشهها
set /a folderSize+=subFolderSize
حجم زیرپوشهها را هم اضافه میکند
تبدیل حجم کل پوشه
set /a folderMB=folderSize/1048576
if !folderMB! lss 1 set folderMB=1
نوشتن نام پوشه و حجم کل
echo !indent!!currentFolder! [Total: !folderMB! MB] >> "%output%"
مثلاً:
C:\MyFolder [Total: 120 MB]
ارسال مقدار به سطح بالا
set subFolderSize=!folderSize!
exit /b
مقدار حجم پوشه را برمیگرداند به تابع بالاتر
خروج از تابع
جمعبندی ساده
به صورت خلاصه این اسکریپت:
- از کاربر مسیر میگیرد
- کل پوشه را بررسی میکند
- فایلها و پوشهها را لیست میکند
- حجم هر فایل را حساب میکند
- حجم کل هر پوشه را هم حساب میکند
- خروجی را در یک فایل TXT ذخیره میکند
- ساختار درختی (Tree) ایجاد میکند
