windows中比特率的千位分隔符
Posted
技术标签:
【中文标题】windows中比特率的千位分隔符【英文标题】:thousand separator for bitrates in windows 【发布时间】:2022-01-16 05:52:41 【问题描述】:如何在 Windows 批处理中为比特率变量添加逗号? (不使用powershell)
例子:
2 000 kb/s => 2,000 kb/s(用逗号替换空格)
876 kb/s => 876 kb/s(无变化)
10.1 MB/s => 10.1 MB/s(无变化)
是否可以用简单的 1 或 2 线来完成?
此外,比特率因每个视频而异。它不是固定的。 谢谢!
【问题讨论】:
【参考方案1】:这是一个“简单的 1 或 2 班轮”解决方案,适用于每个最多 9 位的数字(不是比特率)。它还提供了对齐(右对齐)转换后的数字的附加功能。如果您不想对齐,只需消除空格(例如通过for
命令)。
@echo off
setlocal EnableDelayedExpansion
rem Initialize data, just once
set "c = " & for /L %%i in (0,1,9) do set "c%%i=,"
rem Generate a series of test numbers between 1 and 9 digits, with two optional decimals
for /L %%i in (1,1,10) do (
set "num=!random!!random!"
for %%d in (!random:~-1!) do if %%d gtr 0 set "num=!num:~0,%%d!"
if !random:~-1! geq 5 set "num=!num!.!random:~-2!"
call :insertCommas !num!
)
goto :EOF
:insertCommas num
for /F "tokens=1* delims=." %%a in ("%1") do set "int= %%a" & if "%%b" equ "" (set "frc= ") else set "frc=.%%b"
echo %int:~-9%%frc% = %int:~-9,3%!c%int:~-7,1%!%int:~-6,3%!c%int:~-4,1%!%int:~-3%%frc%
exit /B
输出示例:
1719 = 1,719
155292712 = 155,292,712
3269828.90 = 3,269,828.90
1300 = 1,300
254112572.84 = 254,112,572.84
1.98 = 1.98
269462 = 269,462
1637 = 1,637
13 = 13
153851.04 = 153,851.04
EDIT 2021/12/13: 评论要求的新方法
这个问题的目的似乎被误解了......
新代码:
@echo off
setlocal EnableDelayedExpansion
for /F "delims=" %%a in (input.txt) do (
set "bitrate=%%a"
set "bitrate=!bitrate: =,!"
echo !bitrate:~0,-5! !bitrate:~-4!
)
示例输入数据:
2 000 kb/s
876 kb/s
10.1 MB/s
输出:
2,000 kb/s
876 kb/s
10.1 MB/s
【讨论】:
谢谢,但数字是“2 000”而不是“2000”。有空间,所以我不知道该怎么做 我明白了...您对您的要求不够清楚! (您不想“添加逗号”,当然powershell也不能直接这样做)。请参阅我的答案中的编辑;如果这不是您想要的,请edit your question 并插入我可以复制的输入数据的示例文件,以及来自此类输入的所需输出。 那么?...我的新解决方案有效吗?以上是关于windows中比特率的千位分隔符的主要内容,如果未能解决你的问题,请参考以下文章