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 용이 아닙니다.
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%
Note that this depends on the output of your dir
command, which needs the last line containing the free space of the format 24 Dir(s) 34,071,691,264 bytes free
. Specifically:
- it must be the last line (or you can modify the
for
loop to detect the line explicitly rather than relying on settingbytesfree
for every line). - the free space must be the third "word" (or you can change the
tokens=
bit to get a different word). - thousands separators are the
,
character (or you can change the substitution from comma to something else).
It doesn't pollute your environment namespace, setting only the bytesfree
variable on exit. If your dir
output is different (eg, different locale or language settings), you will need to adjust the script.
df.exe
Shows all your disks; total, used and free capacity. You can alter the output by various command-line options.
You can get it from http://www.paulsadowski.com/WSH/cmdprogs.htm, http://unxutils.sourceforge.net/ or somewhere else. It's a standard unix-util like du.
df -h
will show all your drive's used and available disk space. For example:
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 is available for free from: https://www.cygwin.com/ It adds many powerful tools to the command prompt. To get just the available space on drive M (as mapped in windows to a shared drive), one could enter in:
M:\>df -h | grep M: | awk '{print $4}'
Using this command you can find all partitions, size & free space: wmic logicaldisk get size, freespace, caption
Using paxdiablo excellent solution I wrote a little bit more sophisticated batch script, which uses drive letter as the incoming argument and checks if drive exists on a tricky (but not beauty) way:
@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)
note1: you may type simple letter (eg. x) or may use x: or x:\ format as drive letter in the argument
note2: script will display stderr from %chkfile% only if the size bigger than 0
note3: I saved this script as freedisk.cmd (see usage)
Is cscript a 3rd party app? I suggest trying Microsoft Scripting, where you can use a programming language (JScript, VBS) to check on things like List Available Disk Space.
The scripting infrastructure is present on all current Windows versions (including 2008).
On Windows 10, the copy and xcopy operations fail immediately, in case a file is copied that is too large for the target directory. So it is not required any more to check the available free disk space before starting the copy operation.
참고URL : https://stackoverflow.com/questions/293780/free-space-in-a-cmd-shell
'IT story' 카테고리의 다른 글
읽을 수있는 / 계층 적 형식으로 배열 표시 (0) | 2020.09.12 |
---|---|
스레드 또는 타이머에서 HttpServerUtility.MapPath 메서드에 액세스하는 방법은 무엇입니까? (0) | 2020.09.11 |
문자열에서 '-'문자를 제거하는 jQuery (0) | 2020.09.11 |
문자열에있는 모든 문자의 색인 (0) | 2020.09.11 |
드로어 블에서 스타일 속성을 참조하는 방법은 무엇입니까? (0) | 2020.09.11 |