Windows, bagaimana mengonversi output program batch byte ke KB, MB atau GB?

0

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)

-

Yusuf
sumber
Matematika dalam file batch NT - lihat Workarounds: bagian 32-bit
DavidPostill
Saya punya posting di sini di SO dengan beberapa metode Anda bisa memasukkan ke dalam skrip batch Anda menggunakan PowerShell dinamis tetapi masih batch murni hanya menggunakan PS untuk mengakomodasi batasan batch: stackoverflow.com/questions/42729893/… .... Ada adalah jawaban lain pada posting itu juga Anda mungkin menemukan bermanfaat, layak dibaca saya kira karena Anda tidak pernah tahu.
Pimp Juice,

Jawaban:

0

Jika Anda ingin melakukan aritmatika, Anda harus menyingkirkan ribuan pemisah terlebih dahulu. Jadi, ubah dir /s/w/cke dir /s/w/-c. Kemudian, ini adalah pembagian sederhana:

set /a kb=%bytes% / 1024
set /a mb=%bytes% / 1048576
set /a gb=%bytes% / 1073741824
echo %kb% kB
echo %mb% MB
echo %gb% GB

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.

Berend
sumber
0

cmd.exe adalah proses 32 bit sehingga perintah sebagai:

set /a result1=%bytes% / 1024

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.exedan itu akan berfungsi, misalnya Anda baris perintah harus seperti ini:

C:\Windows\SysWOW64\cmd.exe /C path\to\batchfile.cmd
jcbermu
sumber
Saya tidak melihat banyak keberuntungan dengan cmd syswow
barlop