CMD 셸의 여유 공간


95

타사 응용 프로그램을 설치하지 않고도 CMD에서 디스크 또는 폴더의 여유 디스크 공간을 확보하는 방법이 있습니까?

큰 파일을 주어진 디렉토리에 복사하는 CMD가 있고 물론 복사 명령에서 오류 수준 반환을 사용할 수 있지만 파일을 복사하는 데 걸리는 시간을 기다려야합니다 (예 : 디스크가 꽉 찼고 복사 작업이 실패 함).

어떤 아이디어인지 카피를 시작하기 전에 알고 싶습니다. Sysinternals에서 DU.EXE 유틸리티를 시도했지만 점유 공간 만 표시됩니다.


"타사 설치"는 "추가 소프트웨어 설치"를 의미한다고 가정해야합니다. 제공하거나 설치할 필요가없는 실용적인 측면. 온보드 수단만을 의미합니다.
— Alexander Stohr

답변:


112

" dir c:\" 을 실행 하면 마지막 줄에 사용 가능한 디스크 공간이 표시됩니다.

편집 : 더 나은 솔루션 : " fsutil volume diskfree c:"


1
또한 마운트 지점에서도 작동하지만 dir에는 해당되지 않습니다!
— LogicDaemon 2014-10-06

2
Dir은 잘 작동하지만 드라이브가 비어 있으면 더미 파일을 만들어야합니다. 그 밖에, 그것은 (<3 개 리에게 :) 드라이브 여유 공간을 제공하지 않습니다
— Balmipour

사용 가능한 바이트 수를 얻는 방법이 있습니까?
— 미나 야곱

또한 루트 디렉토리를 제외하고 dir ..*(또는 dir c:\thing\..*) 디렉토리에 파일이 없거나 많은지 여부에 관계없이 매우 짧은 목록이 표시됩니다.
— azhrei

fsutil 방식은 IMDisk RAM 드라이브와 같은 가상 드라이브에서 작동하지 않을 수 있습니다. 당신은 얻을 것입니다 : 오류 : 잘못된 기능. FSUTIL 유틸리티에는 로컬 NTFS 볼륨이 필요합니다.
— user2846246 apr

51

가능한 해결책 :

dir|find "bytes free"

Windows Xp 이상을위한 보다 " 고급 솔루션 ":

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

Windows 관리 계측 명령 줄 (WMIC) 도구 (Wmic.exe를)은 윈도우 서버 2003뿐만 아니라 Windows XP 또는 Vista 약 방대한 양의 정보를 수집 할 수 있습니다. 이 도구는 WMI (Windows Management Instrumentation)를 사용하여 기본 하드웨어에 액세스합니다. Windows 2000 용이 아닙니다.


Alexander Stohr 가 의견에서 언급했듯이 :

  • WMIC는 정책 기반 제한도 볼 수 있습니다. ( ' dir'이 여전히 작업을 수행하더라도),
  • ' dir'는 로케일에 따라 다릅니다.

5
WMI의 경우 +1. 유일한 안정적인 솔루션이어야합니다. 특정 언어 (찾기를 위해)에 의존하는 것은 아마도 나쁜 생각 일 것입니다. :)
— Joey

: 다음 사용할 수있는 변수 하나에 여유 공간을 넣으려면@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
— 다보르 Josipovic

3
@Pacerier : fsutil당신이 무엇을하고 있든 상관없이 실행하려면 관리자 권한이 필요 했던 기억 이납니다.
— Joey


1
@AlexanderStohr 좋은 지적입니다. 더 많은 가시성을 위해 답변에 귀하의 의견을 포함했습니다.
— VonC

8

이 명령을 사용하여 모든 파티션, 크기 및 여유 공간을 찾을 수 있습니다. wmic logicaldisk get size, freespace, caption


7

DIR 명령에서 / -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 / A는 좋지만 큰 숫자로 작동하지 않습니다.

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/ 또는 다른 곳 에서 얻을 수 있습니다 . du와 같은 표준 유닉스 유틸리티입니다.

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 드라이브의 사용 가능한 공간 만 얻으려면 (Windows에서 공유 드라이브에 매핑 된대로) 다음을 입력 할 수 있습니다.

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

2
왜 당신이 약 탈당했는지 아십니까? 질문을주의 깊게 읽지 않기 때문입니다. 읽기 :«일부 타사 응용 프로그램을 설치할 필요없이». 개인적으로 unxutils를 좋아하지만 여기서는 답이 아닙니다.
— LogicDaemon 2014 년

7
OP 외에 여기 오는 사람들에게는 여전히 괜찮은 대답입니다
— Peter

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 : \ 형식을 인수의 드라이브 문자로 사용할 수 있습니다.

참고 2 : 스크립트는 크기가 0보다 큰 경우에만 % chkfile %의 stderr을 표시합니다.

note3 :이 스크립트를 freedisk.cmd로 저장했습니다 (사용법 참조).


1

스크립트에서 이것을 생성하기 위해 변형을 만듭니다.

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

이 정보를 얻기 위해 diskpart 를 사용 합니다.

@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는 타사 앱인가요? 프로그래밍 언어 (JScript, VBS)를 사용하여 List Available Disk Space 와 같은 항목을 확인할 수있는 Microsoft Scripting 을 사용하는 것이 좋습니다 .

스크립팅 인프라는 모든 최신 Windows 버전 (2008 포함)에 있습니다.


1
cscript 이다 마이크로 소프트 스크립팅. Windows 스크립팅 인터프리터 ( wscriptGUI 버전) 의 콘솔 버전입니다 .
— Synetech 2014

"타사 설치"는 "추가 소프트웨어 설치"를 의미한다고 가정해야합니다. 제공하거나 설치할 필요가없는 실용적인 측면. 온보드 수단만을 의미합니다.
— Alexander Stohr
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.