ฉันกำลังพยายามสร้างไฟล์แบตช์เพื่อดึงขนาดโดยรวมและพื้นที่ว่างของไดรฟ์ C: \ ของเซิร์ฟเวอร์ (รันสคริปต์ในเครื่อง) ฉันต้องการเอาต์พุตเพื่อให้สามารถอ่านได้ง่ายดังนั้น bytes จึงไม่ทำงานดังนั้นฉันก็เลยใช้คำสั่งที่สร้างไฟล์ temp .vbs
ต่อไปนี้ดูเหมือนว่าจะใช้งานได้ แต่การจัดรูปแบบ / คณิตศาสตร์ไม่ถูกต้อง
setlocal
for /f "tokens=6" %a in ('fsutil volume diskfree C: ^| find "of bytes"') do set diskspace=%a
echo wsh.echo FormatNumber(cdbl(%diskspace%)/1024, 0) > %temp%.\tmp.vbs
for /f %a in ('cscript //nologo %temp%.\tmp.vbs') do set diskspace=%a
del %temp%.\tmp.vbs
echo For example %diskspace%
คำสั่งข้างต้นจะแสดงพื้นที่ว่างเท่านั้น ... ฉันต้องการขนาดรวมด้วย ... สงสัยว่าคำสั่งต่อไปนี้อาจจะดีกว่าสำหรับการดึงข้อมูล:
WMIC LOGICALDISK GET Name,Size,FreeSpace | find /i "C:"
โปรดทราบว่าฉันต้องการให้สิ่งนี้สามารถคัดลอก / วางโดยตรงในพรอมต์คำสั่ง (ไม่ใช่ข้อกำหนดแบตช์ - ข้อกำหนดที่บังคับ) ฉันได้ลบ "%%" จากรหัสด้านบนแล้ว
หมายเหตุ: จำเป็นต้องเรียกใช้บนเซิร์ฟเวอร์ 2003+ (ดังนั้น PowerShell จึงไม่ทำงานเช่นเดียวกับอุปกรณ์อื่น ๆ ของบุคคลที่สาม)