Saya mencoba membuat file batch untuk menarik ukuran total dan ruang kosong drive C: \ server (skrip yang dijalankan secara lokal). Saya juga membutuhkan output agar mudah dibaca, sehingga byte tidak akan berfungsi, jadi saya baik-baik saja dengan memiliki baris perintah yang membuat file temp .vbs.
Berikut ini sepertinya bisa bekerja, tetapi pemformatan / matematika tidak benar.
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%
Perintah di atas juga hanya menunjukkan ruang kosong ... Saya ingin ukuran total juga ... Ingin tahu apakah perintah berikut ini mungkin lebih baik untuk menarik info:
WMIC LOGICALDISK GET Name,Size,FreeSpace | find /i "C:"
Perhatikan juga bahwa saya ingin ini dapat disalin / ditempelkan langsung ke prompt perintah (bukan file batch - persyaratan yang dipaksakan). Saya sudah menghapus "%%" dari kode di atas.
Catatan: Perlu dijalankan secara native di Server 2003+ (jadi Powershell tidak ada, serta semua utilitas pihak ke-3).
sumber
Jawaban:
Di bawah bukan file batch - klausa persyaratan paksa ,
cmd
one-liner berikutnya dapat membantu:Keluaran :
sumber
Saya menyadari Anda sedang mencari sebagai VBS sekarang, tetapi PowerShell dapat melakukan ini dengan sangat mudah:
Baris pertama mendapatkan info disk dari WMI (seperti C: dalam contoh ini), dan hanya memilih Ruang Kosong dan ukuran Total.
Dalam dua baris berikutnya tulis Ruang Kosong dan Total ukuran ke konsol, diformat dalam GB, dengan pecahan terpotong.
Contoh output (apa adanya):
sumber
Dalam file batch, Anda bisa mendapatkan ukuran disk dalam GB disk yang ditentukan dengan menggunakan skrip DiskPart. Dalam contoh ini, saya mengatur indeks disk spesifik sesuai dengan nama modelnya (dengan asumsi hanya ada satu seperti itu di komputer). Ubah string " Disk SATA " agar sesuai dengan model drive disk Anda. Anda bisa mendapatkan nama model dengan menjalankan perintah " wmic diskdrive get Model, Index " di cmd.
Tentu saja, Anda dapat menggunakan properti disk yang berbeda di perintah wmic - ketik wmic diskdrive get /? untuk mendapatkan daftar semua properti disk yang dapat Anda gunakan.
sumber
Jika Anda hanya perlu memeriksa apakah drive memiliki ruang kosong yang cukup (untuk menginstal atau menyalin sesuatu misalnya), Anda dapat mencoba kueri wmic seperti ini:
wmic LogicalDisk where "DeviceID='c:' and FreeSpace > 10737418240" get DeviceID 2>&1 ^ | find /i "c:" >nul || (echo not enough space&exit 1)
ini akan merusak eksekusi file batch jika kurang dari 10Gb gratis di C:
sumber
Bagilah dengan 1024 untuk mendapatkan kibytes (2 ^ 10). Bagi dengan 1024 x 1024 untuk mendapatkan Mibytes (2 ^ 20). Bagi dengan 1024 x 1024 x 1024 untuk mendapatkan Gibytes (2 ^ 30).
Windows menyebut unit ini kilobyte, Megabita, dan Gigabita karena alasan historis. Saya pikir casing saya benar.
Jadi, ubah jumlah Anda.
sumber