[windows] CMD 셸의 여유 공간

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

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

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



답변

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

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


답변

가능한 해결책 :

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‘는 로케일에 따라 다릅니다.

답변

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


답변

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%


답변

다음 스크립트는 드라이브의 여유 바이트를 제공합니다.

@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출력이 다른 (예를 들어, 다른 로케일 또는 언어 설정), 당신은 스크립트를 조정해야합니다.


답변

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}'


답변

사용 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로 저장했습니다 (사용법 참조).