एक सीएमडी खोल में खाली स्थान


95

वहाँ एक डिस्क या सीएमएसडी में एक फ़ोल्डर के मुफ्त डिस्कस्पेस की राशि प्राप्त करने के लिए कुछ तृतीय-पक्ष अनुप्रयोगों को स्थापित करने के बिना एक तरीका है?

मेरे पास एक सीएमडी है जो किसी दिए गए निर्देशिका में एक बड़ी फ़ाइल की प्रतिलिपि बनाता है और निश्चित रूप से कॉपी कमांड से त्रुटिलेवल रिटर्न का उपयोग कर सकता है, लेकिन फिर मुझे फ़ाइल की प्रतिलिपि बनाने में लगने वाले समय का इंतजार करना होगा (उदाहरण के लिए ... तब तक डिस्क भरी हुई है और कॉपी ऑपरेशन विफल रहता है)।

यदि मुझे कोई भी विचार है तो मैं कॉपी शुरू करने से पहले जानना चाहूंगा। Sysinternals से DU.EXE उपयोगिता की कोशिश की, लेकिन यह शो केवल स्थान पर कब्जा कर लिया।


मुझे "थर्ड पार्टी इन्स्टॉल" मान लेना है, बल्कि इसका अर्थ है "कोई अतिरिक्त सॉफ़्टवेयर इंस्टॉल"। न तो प्रदान करने के लिए और न ही कुछ भी स्थापित करने के लिए न तो व्यावहारिक पहलू। केवल ऑन-बोर्ड का मतलब है।
अलेक्जेंडर स्टोह

जवाबों:


112

यदि आप " dir c:\" चलाते हैं , तो अंतिम पंक्ति आपको मुफ्त डिस्क स्थान देगी।

संपादित करें: बेहतर समाधान: " fsutil volume diskfree c:"


1
और यह माउंटपॉइंट के साथ भी काम करता है, जो कि dir के मामले में नहीं है!
लॉजिकडैमॉन

2
डिर अच्छी तरह से काम करता है, लेकिन ध्यान दें कि यदि आपकी ड्राइव खाली है तो आपको एक डमी फ़ाइल बनानी होगी। इसके अलावा, यह ड्राइव को मुफ्त स्थान नहीं देता है (<3 Ms :)
Balmipour

वहाँ सिर्फ नि: शुल्क बाइट्स की संख्या पाने के लिए एक रास्ता है?
मीना जैकब

इसके अलावा, रूट डायर को छोड़कर, dir ..*(या dir c:\thing\..*) एक बहुत ही छोटी लिस्टिंग दिखाएगा, कि निर्देशिका में शून्य या कई फाइलें हैं या नहीं।
अज़रेई

fsutil तरीका IMDisk RAM Drive जैसे वर्चुअल ड्राइव के लिए काम नहीं कर सकता है। आप प्राप्त करने जा रहे हैं: त्रुटि: गलत कार्य। FSUTIL उपयोगिता के लिए स्थानीय NTFS वॉल्यूम की आवश्यकता होती है।
user2846246

51

एक संभावित समाधान:

dir|find "bytes free"

एक और " उन्नत समाधान ", विंडोज एक्सपी और उससे आगे के लिए:

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

विंडोज प्रबंधन इंस्ट्रुमेंटेशन कमांड लाइन (WMIC) उपकरण (Wmic.exe) एक Windows Server 2003 के साथ-साथ Windows XP या Vista के बारे में के बारे में जानकारी के विशाल मात्रा में इकट्ठा कर सकते हैं। उपकरण Windows प्रबंधन इंस्ट्रूमेंटेशन (WMI) का उपयोग करके अंतर्निहित हार्डवेयर तक पहुँचता है। विंडोज 2000 के लिए नहीं।


जैसा कि अलेक्जेंडर स्टोह्र ने टिप्पणियों में लिखा है :

  • WMIC नीति आधारित प्रतिबंधों को भी देख सकता है। (भले ही ' dir' अभी भी काम करेंगे),
  • ' dir' स्थानीय निर्भर है।

5
WMI के लिए +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
जोसफोविक

3
@Pacerier: मुझे लगता है कि मुझे यह भी याद रखना fsutilचाहिए कि आप चाहे जो भी कर रहे हों, उसे चलाने के लिए प्रशासक के विशेषाधिकारों की आवश्यकता है।
जॉय


1
@AlexanderStohr अच्छे अंक। अधिक दृश्यता के उत्तर में मैंने आपकी टिप्पणी को शामिल किया है।
वॉन

8

इस आदेश का उपयोग करके आप सभी विभाजन, आकार और खाली स्थान पा सकते हैं: wmic logicaldisk get size, freespace, caption


7

आप डीआईआर कमांड पर / -सी का उपयोग करके अल्पविराम से बच सकते हैं।

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। विशेष रूप से:

  • यह अंतिम पंक्ति होनी चाहिए (या आप इसे संशोधित कर सकते हैं forbytesfree प्रत्येक पंक्ति के लिए सेटिंग पर निर्भर होने के बजाय स्पष्ट रूप से लाइन का पता लगाने के लूप को )।
  • खाली स्थान तीसरा "शब्द" होना चाहिए (या आप इसे बदल सकते हैं 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

Cygwin मुफ्त में उपलब्ध है: https://www.cygwin.com/ यह कमांड प्रॉम्प्ट में कई शक्तिशाली उपकरण जोड़ता है। ड्राइव M पर बस उपलब्ध स्थान प्राप्त करने के लिए (जैसा कि एक साझा ड्राइव में विंडोज़ में मैप किया गया है), कोई इसमें प्रवेश कर सकता है:

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

2
क्या आप जानते हैं कि आपका खनन क्यों किया गया है? क्योंकि आप प्रश्न को ध्यान से नहीं पढ़ते हैं। पढ़ें: «कुछ थर्डपार्टी एप्लिकेशन इंस्टॉल किए बिना» हालांकि मैं व्यक्तिगत रूप से अनएक्सट्यूट पसंद करता हूं, लेकिन इसका जवाब यहां नहीं है।
लॉजिकडैमॉन

7
यह अभी भी ओपी के अलावा अन्य लोगों के लिए एक सभ्य गुणवत्ता का उत्तर है
पीटर

1

Paxdiablo उत्कृष्ट समाधान का उपयोग करते हुए मैंने थोड़ा और अधिक परिष्कृत बैच स्क्रिप्ट लिखी, जो आने वाले तर्क के रूप में ड्राइव अक्षर का उपयोग करता है और जांचता है कि क्या ड्राइव मुश्किल (लेकिन सौंदर्य नहीं) तरीके से मौजूद है:

@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: \ format का उपयोग कर सकते हैं

नोट 2: स्क्रिप्ट stkr को% chkfile% से प्रदर्शित करेगा यदि आकार 0 से बड़ा है

नोट 3: मैंने इस स्क्रिप्ट को freedisk.cmd के रूप में सहेजा है (उपयोग देखें)


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

Cscript एक 3 पार्टी ऐप है? मेरा सुझाव है कि Microsoft स्क्रिप्टिंग की कोशिश करें , जहां आप सूची उपलब्ध डिस्क स्थान जैसी चीजों की जांच के लिए एक प्रोग्रामिंग भाषा (JScript, VBS) का उपयोग कर सकते हैं ।

स्क्रिप्टिंग इन्फ्रास्ट्रक्चर सभी मौजूदा विंडोज संस्करणों (2008 सहित) पर मौजूद है।


1
cscript है माइक्रोसॉफ्ट स्क्रिप्टिंग। यह विंडोज स्क्रिप्टिंग दुभाषिया ( wscriptजीयूआई संस्करण है) का कंसोल संस्करण है ।
सिनेटेक

मुझे "थर्ड पार्टी इन्स्टॉल" मान लेना है, बल्कि इसका अर्थ है "कोई अतिरिक्त सॉफ़्टवेयर इंस्टॉल"। न तो प्रदान करने के लिए और न ही कुछ भी स्थापित करने के लिए न तो व्यावहारिक पहलू। केवल ऑन-बोर्ड का मतलब है।
अलेक्जेंडर स्टोह
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.