В файле .bat я отображаю строки, содержащие большие числовые данные (представляющие байты пространства хранения, то есть неотрицательные большие целые числа), например:

"   123456789012345"

Я хотел бы отформатировать эти числа для лучшей читабельности, но, к сожалению, я не могу найти какую-либо функцию форматирования для использования в файлах .bat.

Мой желаемый результат будет:

"    123,456,789,012,345"

Есть ли неуклюже названная функция Format, о которой я не знаю? Если нет, то есть ли лучшая практика для форматирования таких чисел, возможно, с использованием оператора For? (Если ни один, никто кроме меня не хочет форматировать числа?)

1 ответ1

2

Я думаю, что нет такой функции для форматирования числовых строк в командах пакетного файла по умолчанию, но вы можете создать пакетный скрипт для вставки тысяч разделителей, например так:

@echo off
SetLocal EnableExtensions EnableDelayedExpansion

set "var1=%1"

echo Input: %var1%

rem Credit to Aacini (so/a/28704587)
set "var2="
set "sign="
if "%var1:~0,1%" equ "-" set "sign=-" & set "var1=%var1:~1%"

for /L %%i in (1,1,%2) do if defined var1 (
   set "var2=,!var1:~-3!!var2!"
   set "var1=!var1:~0,-3!"
)
set "var2=%sign%%var2:~1%

echo Output: %var2%

Использование:

[filename].bat [number] [grouping]

e.g. [filename].bat 12345678901234567890 5

Пример вывода на консоль:

Input: 123456789012345
Output: 123,456,789,012,345

NB. Используйте пробелы после echo команд, чтобы добавить пробелы в выходной номер столько раз, сколько хотите.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .