উইন্ডোজ কমান্ড লাইন জিবিতে ডিস্কের স্থান পাবে


12

সি: ser সার্ভারের ড্রাইভ (স্থানীয়ভাবে স্ক্রিপ্ট চালানো) এর মোট আকার এবং বিনামূল্যে স্থান টানতে আমি একটি ব্যাচ ফাইল তৈরি করার চেষ্টা করছি। আউটপুটটি সহজেই পঠনযোগ্য হওয়ার জন্য আমারও দরকার, তাই বাইটগুলি কাজ করছে না, তাই আমি একটি কমান্ড লাইনের সাথে ঠিক আছি যা একটি টেম্প .vbs ফাইল তৈরি করে।

নিম্নলিখিতটি দেখে মনে হচ্ছে এটি কাজ করতে পারে তবে বিন্যাস / গণিতটি সঠিক নয়।

setlocal
for /f "tokens=6" %a in ('fsutil volume diskfree C: ^| find "of bytes"') do set diskspace=%a
echo wsh.echo FormatNumber(cdbl(%diskspace%)/1024, 0) > %temp%.\tmp.vbs
for /f %a in ('cscript //nologo %temp%.\tmp.vbs') do set diskspace=%a
del %temp%.\tmp.vbs
echo For example %diskspace%

উপরের কমান্ডগুলি কেবল ফাঁকা জায়গা দেখায় ... আমি মোট আকারও চাই ... ভাবছি যদি নিম্নলিখিত কমান্ডটি তথ্যটি আঁকার জন্য আরও ভাল হতে পারে:

WMIC LOGICALDISK GET Name,Size,FreeSpace | find /i "C:"

এও নোট করুন যে আমি এটি অনুলিপি করতে / কমান্ড প্রম্পটে সরাসরি আটকানো (ব্যাচের ফাইল নয় - বাধ্যতামূলক প্রয়োজনীয়তা) রাখতে সক্ষম হতে চাই। আমি উপরের কোড থেকে ইতিমধ্যে "%%" গুলি সরিয়েছি।

দ্রষ্টব্য: সার্ভার 2003+ এ নেটিভালি চালানোর দরকার (সুতরাং পাওয়ারশেল আউট, পাশাপাশি কোনও তৃতীয় পক্ষের ব্যবহার)।


উইন্ডোজের কোন সংস্করণ?
ইবিগ্রিন

সার্ভার 2003+, স্থানীয়ভাবে। এটি প্রতিফলিত করতে আমার মূল পোস্ট আপডেট করুন।
বন্ডউইনভার্সি

উত্তর:


10

অধীনে না একটি ব্যাচ ফাইল - বাধ্য প্রয়োজনীয়তা দফা, পরবর্তী cmdএক-লাইনের সাহায্য করতে পারে:

for /f "tokens=1-3" %a in ('WMIC LOGICALDISK GET FreeSpace^,Name^,Size ^|FINDSTR /I /V "Name"') do @echo wsh.echo "%b" ^& " free=" ^& FormatNumber^(cdbl^(%a^)/1024/1024/1024, 2^)^& " GiB"^& " size=" ^& FormatNumber^(cdbl^(%c^)/1024/1024/1024, 2^)^& " GiB" > %temp%\tmp.vbs & @if not "%c"=="" @echo( & @cscript //nologo %temp%\tmp.vbs & del %temp%\tmp.vbs

আউটপুট :

==>for /f "tokens=1-3" %a in ('WMIC LOGICALDISK GET FreeSpace^,Name^,Size ^|FIND
STR /I /V "Name"') do @echo wsh.echo "%b" ^& " free=" ^& FormatNumber^(cdbl^(%a^
)/1024/1024/1024, 2^)^& " GiB"^& " size=" ^& FormatNumber^(cdbl^(%c^)/1024/1024/
1024, 2^)^& " GiB" > %temp%\tmp.vbs & @if not "%c"=="" @echo( & @cscript //nolog
o %temp%\tmp.vbs & del %temp%\tmp.vbs

C: free=79,11 GiB size=111,45 GiB

D: free=929,47 GiB size=931,51 GiB

==>

11

আমি বুঝতে পারি যে আপনি এই মুহূর্তে ভিবিএস হিসাবে সন্ধান করছেন তবে পাওয়ারশেল এটি খুব সহজেই করতে পারেন:

$disk = Get-WmiObject Win32_LogicalDisk -Filter "DeviceID='C:'" | Select-Object Size, FreeSpace

Write-Host ("{0}GB total" -f [math]::truncate($disk.Size / 1GB))
Write-Host ("{0}GB free" -f [math]::truncate($disk.FreeSpace / 1GB))

প্রথম লাইনটি ডাব্লুএমআই থেকে ডিস্কের তথ্য পায় (কেবল সি ব্যবহার করে: এই উদাহরণে), এবং কেবল নিখরচায় স্থান এবং মোট আকার নির্বাচন করে।

পরের দুটি লাইনে ফ্রি স্পেস এবং টোটাল মাপগুলি কনসোলে লিখুন, ভগ্নাংশটি কেটে কেটে ফেলা হয়ে জিবিতে ফর্ম্যাট করা হয়েছে।

উদাহরণ আউটপুট (যেমন রয়েছে):

223GB total
125GB free

1
সে সম্পর্কে একটি নোট রাখতে ভুলে গেছেন ... সার্ভার 2003+ এ স্থানীয়ভাবে কাজ করা দরকার (যেহেতু পাওয়ারশেল 2003 সালে স্থানীয় নয়, এটি ব্যবহার করতে পারবেন না)। যদিও পাওয়ারশেলের সাথে অবশ্যই আরও সহজ হত!
বন্ডউইনভার্সি

3

একটি ব্যাচ ফাইলে, আপনি ডিস্ক পার্ট স্ক্রিপ্ট ব্যবহার করে নির্দিষ্ট ডিস্কের জিবিতে ডিস্কের আকার পেতে পারেন । এই উদাহরণে, আমি তার মডেল নাম অনুসারে নির্দিষ্ট ডিস্ক সূচকটি সেট করছি (ধরে নিলাম কম্পিউটারে এর মত একটি মাত্র রয়েছে)। আপনার ডিস্ক ড্রাইভের মডেলটির সাথে মেলে " স্টাটা ডিস্ক " স্ট্রিংটি পরিবর্তন করুন । আপনি " ডাব্লুএমসি ডিস্কড্রাইভ গেট মডেল, ইনডেক্স " সেন্টিমিডিতে কমান্ড চালিয়ে মডেলের নাম পেতে পারেন ।

অবশ্যই, আপনি ডাব্লুমিক কমান্ডে ডিস্কের আলাদা সম্পত্তি ব্যবহার করতে পারেন - টাইপ করুন ডাব্লিমি ডিস্কড্রাইভ গেট /? আপনি যে সমস্ত ডিস্ক বৈশিষ্ট্য ব্যবহার করতে পারেন তার একটি তালিকা পেতে।

for /f %%I in ('wmic diskdrive get Model^, Index ^| find "SATA Disk"') do set DISK_Index=%%I

if not exist %~dp0Disk_Size.script (echo list disk > %~dp0Disk_Size.script)
@echo off
FOR /F "tokens=4 delims= " %%J in ('diskpart /s %~dp0Disk_Size.script ^| find "Disk %DISK_Index%"') do set DISK_SIZE=%%J
IF %ERRORLEVEL% EQU 1 (echo No Data was processed, cannot get DISK_SIZE)

echo DISK_SIZE is %DISK_SIZE% GB

3

আপনার যদি কেবল ড্রাইভের পর্যাপ্ত ফাঁকা জায়গা (উদাহরণস্বরূপ কিছু ইনস্টল করতে বা অনুলিপি করার জন্য) পরীক্ষা করতে হয় তবে আপনি ডাব্লিমি কোয়েরি চেষ্টা করতে পারেন:

wmic LogicalDisk where "DeviceID='c:' and FreeSpace > 10737418240" get DeviceID 2>&1 ^ | find /i "c:" >nul || (echo not enough space&exit 1)

যদি সি তে 10 জিবি এর চেয়ে কম ফ্রি থাকে তবে এটি ব্যাচ ফাইলের সম্পাদন ভঙ্গ করবে:


2

কিবাইট (2 ^ 10) পেতে 1024 দ্বারা ভাগ করুন। মাইবাইট (2 ^ 20) পেতে 1024 x 1024 দ্বারা ভাগ করুন। গিবাইট (2 ^ 30) পেতে 1024 x 1024 x 1024 দ্বারা ভাগ করুন।

উইন্ডোজ unitsতিহাসিক কারণে এই ইউনিটগুলিকে কিলোবাইট, মেগাবাইট এবং গিগাবাইট বলে। আমার মনে হয় আমার কেসিং ঠিক আছে।

সুতরাং আপনার পরিমাণ পরিবর্তন করুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.