2010-03-29 4 views
4

매핑 된 드라이브에서 사용 가능한 여유 공간을 프로그래밍 방식으로 찾을 수 있습니까?매핑 된 드라이브의 여유 공간 비율을 찾는 방법은 무엇입니까?

ms-dos를 사용하여 드라이브의 여유 공간 비율을 찾는 방법.
하드 디스크의 여유 공간을 쉽게 찾을 수 있지만 매핑 된 드라이브의 여유 공간을 찾아야합니다.

필자의 시스템에서 일부 파일 서버를 매핑했습니다.

내 컴퓨터에서이를 볼 수는 있지만 명령 프롬프트에 어떻게 표시합니까? (서버 오류에 내 이전 응답 각지에서 촬영)

+0

* 당신은 창> 98 – ChristopheD

+0

그래, 플랫폼을 지정하세요에있을 때 당신은 정말 MS-DOS 말할 수 없습니다. "매핑 된"드라이브가 정확히 무엇을 의미합니까? –

+0

변경된 태그 및 정리 된 질문. Windows 명령 프롬프트를 가정합니다. –

답변

9

가장 쉬운 방법은 안정적으로 WMI를 사용하는 사용 가능한 디스크 공간을 얻을 수 있습니다. dir의 출력을 구문 분석 할 때 적어도 다른 언어의 Windows 버전에서는 모든 종류의 재미있는 문제가 발생합니다.

> wmic logicaldisk where "DeviceID='C:'" get FreeSpace /format:value 

FreeSpace=197890965504 
:

wmic logicaldisk where "DeviceID='C:'" get FreeSpace 

이 출력됩니다 뭔가

FreeSpace 
197890965504 
당신은 /format:value 스위치를 추가하여 하나의 선으로이를 강제 할 수

같은 : 당신은 드라이브의 여유 공간을 조회 할 수 wmic을 사용할 수 있습니다

빈 라인이 몇 개 있지만 (3 ~ 4 개 정도) 처리하기에 적합하지 않습니다. 우리가 토큰 화 않을 때 다행히 for 명령은 우리를 위해 제거 할 수 있습니다 :

for /f "usebackq delims== tokens=2" %x in (`wmic logicaldisk where "DeviceID='C:'" get FreeSpace /format:value`) do set FreeSpace=%x 

여기 좋은 점은 우리는 (두 번째 토큰이없는) 모든 빈 줄을 두 번째 토큰을 사용하고 있기 때문에 얻을 수 있다는 것입니다 무시.

배치 파일에서 이것을 사용할 때 % 표시를 두 배로 기억

for /f "usebackq delims== tokens=2" %%x in (`wmic logicaldisk where "DeviceID='C:'" get FreeSpace /format:value`) do set FreeSpace=%%x 

는 이제 환경 변수 %FreeSpace%에 저장 여유 공간을 사용할 수 있습니다.


배치 파일은 32 비트 정수만 계산할 수 있으므로 백분율은 약간 까다 롭습니다. 그러나 바이트로 계산할 필요는 없습니다. 나는 메가 바이트가 충분하다고 생각한다.

for /f "usebackq delims== tokens=2" %%x in (`wmic logicaldisk where "DeviceID='C:'" get FreeSpace /format:value`) do set FreeSpace=%%x 
for /f "usebackq delims== tokens=2" %%x in (`wmic logicaldisk where "DeviceID='C:'" get Size /format:value`) do set Size=%%x 
set FreeMB=%FreeSpace:~0,-6% 
set SizeMB=%Size:~0,-6% 
set /a Percentage=100 * FreeMB/SizeMB 
echo C: is %Percentage% % free 

볼륨이 20 TiB보다 커지지 않는 한이 작업은 효과가있다.

+0

gr8 감사합니다 .. 실제로 대답은 7.79로 표시되며 float로 표시 될 수 있습니까? – Arunachalam

+0

@aru : 그런 것은 아닙니다. cmd는 정수 계산 만 지원합니다. 100 대신에 10000을 곱하고 수동으로 소수점을 삽입 할 수 있습니다. 그러나 자유 크기는 200 GiB를 초과 할 수 없습니다. – Joey

0

GetDiskFreeSpaceEx이 필요합니다. 드라이브 작품, 당신은 PowerShell을 사용하여 매우 쉽게 현대 Windows에서이 작업을 수행 할 수 있습니다

ULARGE_INTEGER free; 
ULARGE_INTEGER total; 
ULARGE_INTEGER totalFree; 
BOOL   ok; 

ok = GetDiskSpaceFreeEx(path, &free, &total, &totalFree); 
if (ok) 
{ 
// do your sums here, then printf the result 
} 
+0

커맨드 라인, 스크립팅 ... 나는 이것이 C. – Joey

0

등 드라이브를 매핑.

이 cmdlet은 드라이브가 포함 된 멋진 테이블과 해당 공간에 대한 정보를 반환합니다.

get-psdrive | Where Free* 

Name   Used (GB)  Free (GB) Provider  Root                 CurrentLocation 
----   ---------  --------- --------  ----                 --------------- 
C     101.65   65.59 FileSystem C:\                 WINDOWS\system32 
D     801.55  129.96 FileSystem D:\ 
R     443.17  2351.22 FileSystem R:\ 
X     119.28  104.29 FileSystem X:\ 

아마도 당신이 찾고있는 것을 얻는 가장 쉽고 빠른 방법입니다. 이 cmds를 실행하려면 cmd.exe가 아닌 PowerShell을 시작해야합니다.

get-psdrive | 어디 무료

관련 문제