格式化 .bat 文件中的数字

格式化 .bat 文件中的数字

在.bat 文件中,我回显包含大型数值数据(表示存储空间的字节,即非负大整数)的字符串,例如:

"   123456789012345"

我想格式化这些数字以提高可读性,但不幸的是,我找不到任何可在 .bat 文件中使用的格式化函数。

我希望的输出是:

"    123,456,789,012,345"

是否有我不知道的、名字很别扭的 Format 函数?如果没有,是否有一个最佳实践函数来格式化这些数字,可能涉及 For 语句?(如果没有,除了我之外,难道没有人想格式化数字吗?)

答案1

我认为在默认批处理文件命令中没有这样的函数来格式化数字字符串,但您可以创建一个批处理脚本来插入千位分隔符,如下所示:

@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

注意:使用命令后的空格echo可以在输出数字中添加任意数量的空格。

相关内容