Windows, Как конвертировать пакетный вывод программы байт в КБ, Мб или ГБ?

в пакете windows, Как конвертировать байты в КБ или Мб или ГБ?


В пакете, как вывести наружу результаты к экрану?

ниже пакет Windows, который выводит размер папки в байтах.


пример:

2,041,737,167 байт 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    

в пакете, как конвертировать?

2,041,737,167 байт to:

1,993,883 KB (2,041,737,167 / 1024)

1947 MB (2,041,737,167 / 1048576)

1.9 GB (2,041,737,167 / 1073741824)

--

6
задан Joseph
09.01.2023 22:03 Количество просмотров материала 2486
Распечатать страницу

3 ответа

Если вы хотите сделать арифметику, вам нужно сначала избавиться от тысячи разделителей. Таким образом, изменение dir /s/w/c до dir /s/w/-c. Тогда это простое деление:

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

обратите внимание, что числа ограничены 32 битами точности, поэтому для больших папок это не удастся. Кроме того, как отметил Йорик, цифры будут усечены.

вывод не будет иметь тысячи разделителей. Если вы этого хотите, это, вероятно, совершенно новый вопрос.

0
отвечен Berend 2023-01-11 05:51

пакет не поддерживает плавающую точку, насколько я знаю, поэтому ваши результаты будут усечены:

@echo off
set /a "_number=2041737167/1073741824"
echo %_number%
pause

выделяет 1 вместо 1.9

часто, люди будут называть команду cscript (и т. д.) Для математических функций (например: https://stackoverflow.com/questions/1503888/floating-point-division-in-a-dos-batch )

0
отвечен Yorik 2023-01-11 08:08

cmd.exe - это 32-битный процесс, поэтому команды:

set /a result1=%bytes% / 1024

завершается с ошибкой: "недопустимый номер. Числа ограничены 32-битной точностью

если вы оказались в 64-битном устройстве (в настоящее время это очень вероятно), вызовите командную строку из C:\Windows\SysWOW64\cmd.exe и он будет работать, например у вас командная строка должна быть примерно такой:

C:\Windows\SysWOW64\cmd.exe /C path\to\batchfile.cmd
0
отвечен jcbermu 2023-01-11 10:25

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх