Di batch windows, Bagaimana mengkonversi Bytes ke KB atau MB atau GB?
Secara batch, Bagaimana cara menampilkan hasil ke layar?
Di bawah ini adalah kumpulan Windows yang menampilkan ukuran folder dalam byte.
contoh:
2.041.737.167 byte dalam d: \ temp
@echo off
set bytes=
for /f "usebackq tokens=1,2,3,4" %%a in (`dir /s/w/c "d:\temp\" ^| findstr "File(s)"`) do set bytes=%%c
echo %bytes% bytes in d:\temp\*.*
pause
Dalam batch, bagaimana cara mengubahnya?
2.041.737.167 byte ke:
1.993.883 KB (2.041.737.167 / 1024)
1947 MB (2.041.737.167 / 1048576)
1,9 GB (2.041.737.167 / 1073741824)
-
Jawaban:
Jika Anda ingin melakukan aritmatika, Anda harus menyingkirkan ribuan pemisah terlebih dahulu. Jadi, ubah
dir /s/w/c
kedir /s/w/-c
. Kemudian, ini adalah pembagian sederhana:Perhatikan bahwa jumlahnya terbatas pada presisi 32 bit, jadi untuk folder besar ini akan gagal. Juga, seperti yang disebutkan Yorik, angka akan terpotong.
Output tidak akan memiliki ribuan pemisah. Jika Anda menginginkannya, itu mungkin pertanyaan yang sama sekali baru.
sumber
Batch tidak mendukung floating point sejauh yang saya tahu, jadi hasil Anda akan terpotong:
Akan memancarkan
1
bukan1.9
Seringkali, orang akan memanggil cscript (dll) untuk fungsi matematika (misalnya: https://stackoverflow.com/questions/1503888/floating-point-division-in-a-dos-batch )
sumber
cmd.exe
adalah proses 32 bit sehingga perintah sebagai:akan gagal dengan kesalahan: "Nomor tidak valid. Angka terbatas pada presisi 32-bit
Jika Anda kebetulan berada di perangkat 64 bit (saat ini sangat mungkin), panggil prompt perintah dari
C:\Windows\SysWOW64\cmd.exe
dan itu akan berfungsi, misalnya Anda baris perintah harus seperti ini:sumber