การใช้โซลูชันที่ยอดเยี่ยมของ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)
note1: คุณอาจพิมพ์อักษรธรรมดา (เช่น x) หรืออาจใช้ x: หรือ x: \ format เป็นอักษรระบุไดรฟ์ในอาร์กิวเมนต์
note2: สคริปต์จะแสดง stderr จาก% chkfile% เฉพาะในกรณีที่ขนาดใหญ่กว่า 0
note3: ฉันบันทึกสคริปต์นี้เป็น freedisk.cmd (ดูการใช้งาน)