타사 응용 프로그램을 설치하지 않고도 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로 저장했습니다 (사용법 참조).