البرمجة

قياس مساحة القرص الحرة باستخدام دفعة في نظام Windows

في البداية، يظهر أن لديك تحدي في برمجة دفعة (Batch) للحصول على مساحة القرص الحرة في الجيجابايت والعديد من الاستفسارات المرتبطة بهذا الموضوع. دعونا نقوم بتفحص الشيفرة التي قدمتها لنستوعبها بشكل أفضل:

batch
:: مثال على دفعة لعرض مساحة القرص الحرة على محرك C @echo off cls echo. echo Free Space on C: echo ======================================== for /f "tokens=1-3" %%n in ('"WMIC LOGICALDISK GET Name,Size,FreeSpace | find /i "C:""') do set free=%%n& set total=%%p echo. set free=%free:~0,-3% set /a free=%free%/1049 echo. set /a free=%free%/1024 echo. echo %free% GB free pause > NUL

تبدو الشيفرة تقريبًا صحيحة، حيث تقوم بفحص مساحة القرص الحرة على محرك C وتقديمها بوحدة GB. ومع ذلك، هناك بعض التعديلات التي يمكن إجراؤها لتحسين الشفرة وجعلها أكثر دقة وإفادة.

في السياق البرمجي، يمكنك إجراء بعض التعديلات للتعامل بشكل أفضل مع الأرقام العشرية، وذلك باستخدام أمر set /a مع الأمر 100 للحفاظ على قيمتك بدقة على حدود الجيجابايت:

batch
:: تحسين دقة الأرقام العشرية في دفعة عرض مساحة القرص الحرة @echo off cls echo. echo Free Space on C: echo ======================================== for /f "tokens=1-3" %%n in ('"WMIC LOGICALDISK GET Name,Size,FreeSpace | find /i "C:""') do set free=%%n& set total=%%p echo. set free=%free:~0,-3% set /a free=100*%free%/1049 echo. set /a free=100*%free%/1024 echo. set /a free=100*%free%/100 echo %free%/100 GB free pause > NUL

تجدر الإشارة إلى أن هذا التعديل يُظهر القيمة بدقة عشرية، حيث يتم ضربها في 100 وثم قسمتها على 100 للحصول على قيمة بدقة عشرية بعد الفاصلة.

بخصوص سؤالك حول كيفية استرجاع حجم تيرابايت إذا كان هناك حجم تيرابايت، يمكنك إضافة شرط في الشفرة للتحقق مما إذا كانت الوحدة تيرابايت موجودة، ومن ثم قام بالعمليات اللازمة وفقًا لذلك. إليك مثال:

batch
:: تعديل للتحقق من وحدة تيرابايت @echo off cls echo. echo Free Space on C: echo ======================================== for /f "tokens=1-3" %%n in ('"WMIC LOGICALDISK GET Name,Size,FreeSpace | find /i "C:""') do set free=%%n& set total=%%p echo. set free=%free:~0,-3% set /a free=100*%free%/1049 echo. if "%total:~-1%"=="T" ( set /a free=100*%free%/1024 set /a free=100*%free%/1024 echo %free%/100 TB free ) else ( set /a free=100*%free%/1024 echo %free%/100 GB free ) pause > NUL

هذا التعديل يستخدم شرطًا للتحقق من وجود وحدة تيرابايت (TB)، وإذا كانت موجودة، يقوم بتحويل القيمة إلى تيرابايت. في حال عدم وجود وحدة تيرابايت، يتم تحويلها إلى جيجابايت.

المزيد من المعلومات

بالطبع، دعونا نوسّع على الموضوع بشكل أكبر.

في برمجة الدفعات (Batch scripting)، يُستخدم الكود الذي قدمته للحصول على معلومات حول مساحة القرص الحرة على محرك C. دعونا نفحص كل جزء من الشيفرة لنفهمها بشكل أفضل.

  1. @echo off: هذا السطر يقوم بإيقاف عرض أوامر الطباعة في نافذة الدفعة. إنه يعزل الأوامر التي يتم كتابتها لتظهر فقط النتائج.

  2. cls: هذا الأمر يقوم بمسح شاشة النافذة لتظهر نظيفة.

  3. echo: يستخدم لطباعة النصوص على الشاشة.

  4. for /f "tokens=1-3" %%n in ('"WMIC LOGICALDISK GET Name,Size,FreeSpace | find /i "C:""') do set free=%%n& set total=%%p: يستخدم هذا اللوب (loop) لتحليل نتائج أمر WMIC (Windows Management Instrumentation Command-line)، الذي يُستخدم هنا للحصول على معلومات حول محرك القرص C. يتم استخدام “tokens=1-3” لتحديد الأجزاء التي يجب استخراجها من النتائج، وتُخزّن في المتغيرات free و total.

  5. set free=%free:~0,-3%: يتم استخدامه لحذف آخر ثلاثة أحرف من قيمة المتغير free، والتي تشير إلى وحدة القياس (مثل KB أو MB).

  6. set /a free=100*%free%/1049: يقوم بتحويل قيمة free إلى جيجابايت بدقة عشرية عبر الضرب في 100 والقسمة على 1049.

  7. pause > NUL: يستخدم لإيقاف التنفيذ حتى يقوم المستخدم بالنقر على أي مفتاح.

التعديلات التي قمت بها في الشيفرة تهدف إلى تحسين دقة الأرقام العشرية وتعديل الشيفرة لدعم وحدة تيرابايت.

إذا كنت تحتاج إلى المزيد من المعلومات أو لديك أي أسئلة إضافية حول برمجة الدفعات أو أي موضوع آخر، يرجى إعلامي.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر