একটি সিএমডি শেলের ফাঁকা জায়গা


97

কিছু তৃতীয় পক্ষ অ্যাপ্লিকেশন ইনস্টল না করে কোনও সিএমডিতে ডিস্কের ফ্রি ডিস্কস্পেসের পরিমাণ বা কোনও ফোল্ডার পাওয়ার কোনও উপায় আছে কি?

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

আমি অনুলিপি শুরু করার আগে জানতে চাই যদি এটি কোনও ধারণা হয় তবে। সিসিনটার্নালস থেকে DU.EXE ইউটিলিটি চেষ্টা করে, তবে এটি কেবল স্থান দখল করে।


আমাকে ধরে নিতে হবে "তৃতীয় পক্ষের ইনস্টল" এর অর্থ "কোনও অতিরিক্ত সফ্টওয়্যার ইনস্টল"। যে না কিছু সরবরাহ বা প্রয়োজন ইনস্টল করার ব্যবহারিক দিক। কেবল অন বোর্ডের অর্থ।
আলেকজান্ডার স্টোহর

উত্তর:


116

যদি আপনি " dir c:\" চালনা করেন তবে শেষ লাইনটি আপনাকে ফ্রি ডিস্কের স্থান দেবে।

সম্পাদনা: আরও ভাল সমাধান: " fsutil volume diskfree c:"


4
এবং এটি মাউন্টপয়েন্টগুলি নিয়েও কাজ করে, যা দিরের ক্ষেত্রে হয় না!
লজিকডেমোন

4
দির ভাল কাজ করে তবে নোট করুন আপনার ড্রাইভ ফাঁকা থাকলে আপনাকে একটি ডামি ফাইল তৈরি করতে হবে। অন্যথায়, এটি ড্রাইভকে ফাঁকা জায়গা দেয় না (<3 মেস :)
বাল্মীপুর

নিখরচায় বিনামূল্যে বাইট সংখ্যা পাওয়ার উপায় আছে?
মিনা জ্যাকব

এছাড়াও, মূল ডিয়ার বাদে dir ..*(বা dir c:\thing\..*) ডিরেক্টরিতে শূন্য বা অনেকগুলি ফাইল আছে কিনা তা খুব সংক্ষিপ্ত তালিকা প্রদর্শন করবে।
আজরেই

fsutil উপায় IMDisk র‌্যাম ড্রাইভের মতো ভার্চুয়াল ড্রাইভের জন্য কাজ করতে পারে না। আপনি পেতে যাচ্ছেন: ত্রুটি: ভুল ফাংশন। FSUTIL ইউটিলিটির জন্য একটি স্থানীয় এনটিএফএস ভলিউম প্রয়োজন।
ব্যবহারকারী 2846246

51

একটি সম্ভাব্য সমাধান:

dir|find "bytes free"

উইন্ডোজ এক্সপি এবং এর বাইরে আরও একটি " উন্নত সমাধান ":

wmic /node:"%COMPUTERNAME%" LogicalDisk Where DriveType="3" Get DeviceID,FreeSpace|find /I "c:"

উইন্ডোজ ম্যানেজমেন্ট যন্ত্রানুষঙ্গের কমান্ড-লাইন (WMIC) সরঞ্জাম (Wmic.exe) একটি উইন্ডোজ সার্ভার 2003 সেইসাথে Windows XP বা Vista সম্পর্কে সম্পর্কে তথ্য সুবিশাল পরিমাণে জড়ো করা যাবে। উইন্ডোজ ম্যানেজমেন্ট ইনস্ট্রুমেন্টেশন (ডাব্লুএমআই) ব্যবহার করে সরঞ্জামটি অন্তর্নিহিত হার্ডওয়্যারটি অ্যাক্সেস করে। উইন্ডোজ 2000 এর জন্য নয়।


যেমনটি আলেকজান্ডার স্টোহর মন্তব্যগুলিতে উল্লেখ করেছেন :

  • ডাব্লুএমআইসি নীতি ভিত্তিক বিধিনিষেধগুলিও দেখতে পারে। (এমনকি যদি ' dir' কাজটি এখনও করবে),
  • ' dir' লোকাল নির্ভর।

5
ডাব্লুএমআইয়ের জন্য +1। একমাত্র স্থিতিশীল সমাধান হওয়া উচিত। নির্দিষ্ট ভাষার উপর নির্ভর করা (সন্ধানের জন্য) সম্ভবত একটি খারাপ ধারণা :)
জো জো

একটি ভেরিয়েবলের মধ্যে মুক্ত স্থানটি স্থাপন করতে নিম্নলিখিতটি ব্যবহার করতে পারেন:@FOR /F "tokens=2 delims==" %%S IN ('wmic /NODE:"%COMPUTERNAME%" LogicalDisk Where ^(DriveType^="3" and DeviceID^="%some_folder:~0,2%"^) Get FreeSpace /VALUE') DO @SET freespace=%%S
জোশিপোভিচ

4
@ পেসারিয়র: আমি মনে করি আপনার মনে আছে fsutilযে আপনি এটি চালিয়ে যাচ্ছেন না কেন এমনকি চালনার জন্য প্রশাসকের সুযোগ সুবিধাগুলি প্রয়োজন।
জো

4

4
টুইটারে আরও দৃশ্যমানতার জন্য আমি আপনার মন্তব্যে উত্তরে অন্তর্ভুক্ত করেছি।
ভোনসি

8

এই কমান্ডটি ব্যবহার করে আপনি সমস্ত পার্টিশন, আকার এবং বিনামূল্যে স্থান খুঁজে পেতে পারেন: wmic logicaldisk get size, freespace, caption


7

আপনি ডিআইআর কমান্ডে / -C ব্যবহার করে কমাগুলি এড়াতে পারবেন।

FOR /F "usebackq tokens=3" %%s IN (`DIR C:\ /-C /-O /W`) DO (
    SET FREE_SPACE=%%s
)
ECHO FREE_SPACE is %FREE_SPACE%

আপনি যদি উপলভ্য স্থানটিকে প্রয়োজনীয় জায়গার সাথে তুলনা করতে চান তবে নীচের মতো কিছু করতে পারেন। আমি কয়েক হাজার বিভাজক সহ নম্বরটি নির্দিষ্ট করেছি, তারপরে সেগুলি সরিয়েছি। কমা ছাড়া সংখ্যাটি ধরা শক্ত। এসইটি / এটি দুর্দান্ত তবে এটি প্রচুর সংখ্যার সাথে কাজ করা বন্ধ করে দেয়।

SET EXITCODE=0
SET NEEDED=100,000,000
SET NEEDED=%NEEDED:,=%

IF %FREE_SPACE% LSS %NEEDED% (
    ECHO Not enough.
    SET EXITCODE=1
)
EXIT /B %EXITCODE%

6

নিম্নলিখিত স্ক্রিপ্টটি আপনাকে ড্রাইভে বিনামূল্যে বাইট দেবে:

@setlocal enableextensions enabledelayedexpansion
@echo off
for /f "tokens=3" %%a in ('dir c:\') do (
    set bytesfree=%%a
)
set bytesfree=%bytesfree:,=%
echo %bytesfree%
endlocal && set bytesfree=%bytesfree%

নোট করুন যে এটি আপনার dirকমান্ডের আউটপুট উপর নির্ভর করে , যার জন্য বিন্যাসের ফাঁকা স্থান সম্বলিত শেষ লাইনটি প্রয়োজন 24 Dir(s) 34,071,691,264 bytes free। বিশেষত:

  • এটি অবশ্যই শেষ লাইন হবে (বা প্রতিটি লাইনটির forসেটিংয়ের উপর নির্ভর করার পরিবর্তে আপনি স্পষ্টভাবে লাইনটি সনাক্ত করতে লুপটি সংশোধন করতে পারেন bytesfree)।
  • মুক্ত স্থানটি তৃতীয় "শব্দ" হতে হবে (বা আপনি tokens=আলাদা শব্দ পেতে কিছুটা পরিবর্তন করতে পারেন )।
  • হাজার বিভাজক হ'ল ,চরিত্র (বা আপনি কমা থেকে অন্য কোনও জায়গায় বিকল্পটি পরিবর্তন করতে পারেন)।

এটি আপনার পরিবেশের নেমস্পেসকে দূষিত করে না, bytesfreeপ্রস্থান করার সময় কেবলমাত্র ভেরিয়েবল সেট করে। যদি আপনার dirআউটপুট আলাদা হয় (যেমন, পৃথক লোকেল বা ভাষার সেটিংস), আপনাকে স্ক্রিপ্টটি সামঞ্জস্য করতে হবে।


6

df.exe

আপনার সমস্ত ডিস্ক দেখায়; মোট, ব্যবহৃত এবং বিনামূল্যে ক্ষমতা। আপনি বিভিন্ন কমান্ড-লাইন বিকল্প দ্বারা আউটপুট পরিবর্তন করতে পারেন।

আপনি এটি http://www.paulsadowski.com/WSH/cmdprogs.htm , http://unxutils.sourceforge.net/ বা অন্য কোথাও থেকে পেতে পারেন । এটি ডু এর মতো স্ট্যান্ডার্ড ইউনিক্স-ইউজুয়াল।

df -hআপনার ড্রাইভের সমস্ত ব্যবহৃত এবং উপলব্ধ ডিস্কের স্থান দেখায়। উদাহরণ স্বরূপ:

M:\>df -h
Filesystem      Size  Used Avail Use% Mounted on
C:/cygwin/bin   932G   78G  855G   9% /usr/bin
C:/cygwin/lib   932G   78G  855G   9% /usr/lib
C:/cygwin       932G   78G  855G   9% /
C:              932G   78G  855G   9% /cygdrive/c
E:              1.9T  1.3T  621G  67% /cygdrive/e
F:              1.9T  201G  1.7T  11% /cygdrive/f
H:              1.5T  524G  938G  36% /cygdrive/h
M:              1.5T  524G  938G  36% /cygdrive/m
P:               98G   67G   31G  69% /cygdrive/p
R:               98G   14G   84G  15% /cygdrive/r

সাইগউইন বিনামূল্যে থেকে উপলভ্য: https://www.cygwin.com/ এটি কমান্ড প্রম্পটে অনেক শক্তিশালী সরঞ্জাম যুক্ত করেছে। ড্রাইভ এম তে কেবল উপলভ্য স্থান পেতে (ভাগ করা ড্রাইভে উইন্ডোজে ম্যাপ করা হিসাবে), কেউ প্রবেশ করতে পারে:

M:\>df -h | grep M: | awk '{print $4}'

4
আপনি জানেন কেন আপনাকে মাইনাস করা হয়েছে? কারণ আপনি প্রশ্নটি মনোযোগ দিয়ে পড়েন না। পড়ুন: some কিছু তৃতীয় পক্ষের অ্যাপ্লিকেশন ইনস্টল না করে » যদিও আমি ব্যক্তিগতভাবে অযন্ত্র পছন্দ করি, এটি এখানে উত্তর নয় not
লজিকডেমোন

7
ওপি বাদে অন্য যারা এখানে আসেন তাদের পক্ষে এটি এখনও একটি শালীন মানের উত্তর
পিটার

1

প্যাক্সিডিয়াবলোর দুর্দান্ত সমাধানটি ব্যবহার করে আমি কিছুটা আরও পরিশীলিত ব্যাচের স্ক্রিপ্ট লিখেছিলাম, যা আগত যুক্তি হিসাবে ড্রাইভ লেটার ব্যবহার করে এবং ড্রাইভটি কোন কৃপণ (তবে সৌন্দর্য নয়) পথে উপস্থিত রয়েছে কিনা তা পরীক্ষা করে দেখায় :

@echo off
setlocal enableextensions enabledelayedexpansion
set chkfile=drivechk.tmp
if "%1" == "" goto :usage
set drive=%1
set drive=%drive:\=%
set drive=%drive::=%
dir %drive%:>nul 2>%chkfile%
for %%? in (%chkfile%) do (
  set chksize=%%~z?
)
if %chksize% neq 0 (
  more %chkfile%
  del %chkfile%
  goto :eof
)
del %chkfile%
for /f "tokens=3" %%a in ('dir %drive%:\') do (
  set bytesfree=%%a
)
set bytesfree=%bytesfree:,=%
echo %bytesfree% byte(s) free on volume %drive%:
endlocal

goto :eof
:usage
  echo.
  echo   usage: freedisk ^<driveletter^> (eg.: freedisk c)

নোট 1: আপনি সাধারণ অক্ষর টাইপ করতে পারেন (উদাহরণস্বরূপ x) বা যুক্তিটিতে ড্রাইভ লেটার হিসাবে x: বা x: \ ফর্ম্যাট ব্যবহার করতে পারেন

নোট 2: স্ক্রিপ্টটি% chkfile% থেকে স্টার্ডার প্রদর্শন করবে কেবলমাত্র যদি আকার 0 এর চেয়ে বড় হয়

নোট 3: আমি এই স্ক্রিপ্টটি ফ্রিডিস্ক.কমড হিসাবে সংরক্ষণ করেছি (ব্যবহার দেখুন)


1

স্ক্রিপ্ট থেকে এটি উত্পন্ন করার জন্য আমি একটি প্রকরণ আনছি:

volume C: - 49 GB total space / 29512314880 byte(s) free

আমি এই তথ্য পেতে ডিস্ক পার্ট ব্যবহার করি ।

@echo off
setlocal enableextensions enabledelayedexpansion
set chkfile=drivechk.tmp
if "%1" == "" goto :usage
set drive=%1
set drive=%drive:\=%
set drive=%drive::=%
dir %drive%:>nul 2>%chkfile%
for %%? in (%chkfile%) do (
  set chksize=%%~z?
)
if %chksize% neq 0 (
  more %chkfile%
  del %chkfile%
  goto :eof
)
del %chkfile%
echo list volume | diskpart | find /I " %drive% " >%chkfile%
for /f "tokens=6" %%a in ('type %chkfile%' ) do (
    set dsksz=%%a
)
for /f "tokens=7" %%a in ('type %chkfile%' ) do (
    set dskunit=%%a
)
del %chkfile%
for /f "tokens=3" %%a in ('dir %drive%:\') do (
  set bytesfree=%%a
)
set bytesfree=%bytesfree:,=%
echo volume %drive%: - %dsksz% %dskunit% total space / %bytesfree% byte(s) free
endlocal

goto :eof
:usage
  echo.
  echo   usage: freedisk ^<driveletter^> (eg.: freedisk c)

0

সিএসক্রিপটি কি তৃতীয় পক্ষের অ্যাপ? আমি মাইক্রোসফ্ট স্ক্রিপ্টিং চেষ্টা করার পরামর্শ দিচ্ছি , যেখানে আপনি তালিকা উপলব্ধ ডিস্ক স্পেসের মতো জিনিসগুলি পরীক্ষা করতে একটি প্রোগ্রামিং ভাষা (জেএসক্রিপ্ট, ভিবিএস) ব্যবহার করতে পারেন

স্ক্রিপ্টিং অবকাঠামো সমস্ত বর্তমান উইন্ডোজ সংস্করণে উপস্থিত রয়েছে (২০০৮ সহ)।


4
cscript হয় মাইক্রোসফট স্ক্রিপ্টিং। এটি উইন্ডোজ স্ক্রিপ্টিং ইন্টারপ্রেটারের কনসোল সংস্করণ ( wscriptএটি জিইউআই সংস্করণ)।
সিনিটেক

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