가장 쉬운 방법은 안정적으로 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보다 커지지 않는 한이 작업은 효과가있다.
* 당신은 창> 98 – ChristopheD
그래, 플랫폼을 지정하세요에있을 때 당신은 정말 MS-DOS 말할 수 없습니다. "매핑 된"드라이브가 정확히 무엇을 의미합니까? –
변경된 태그 및 정리 된 질문. Windows 명령 프롬프트를 가정합니다. –