Batch file 批处理文件填充为零
我有一个身份证号码列表,如下所示:Batch file 批处理文件填充为零,batch-file,cmd,zero-padding,Batch File,Cmd,Zero Padding,我有一个身份证号码列表,如下所示: 123 4456 657 23 199 set num_max=5 set my_num=123 set "my_num=00000%my_num%" set "mynum=!my_num:!~-%num_max%!" echo %my_num% 我想给它添加填充零,这样它将以5位结束,结果如下: 00123 04456 00657 00023 00199 我在网上查过了,但找不到.bat文件的解决方案。 我尝试
123
4456
657
23
199
set num_max=5
set my_num=123
set "my_num=00000%my_num%"
set "mynum=!my_num:!~-%num_max%!"
echo %my_num%
我想给它添加填充零,这样它将以5位结束,结果如下:
00123
04456
00657
00023
00199
我在网上查过了,但找不到.bat文件的解决方案。
我尝试过以下方法:
123
4456
657
23
199
set num_max=5
set my_num=123
set "my_num=00000%my_num%"
set "mynum=!my_num:!~-%num_max%!"
echo %my_num%
但是reuslt变成了00000123。我有一个循环来读取所有的输入值
for /f "tokens=1" %%a in (.\config.ini) do (
echo %%a
)
``` and the %%a is the value that I would like to add the padding zero to.
如果您想继续学习一些PowerShell,您可以在批处理文件中轻松完成以下操作。如果您使用的是受支持的Windows系统,则PowerShell可用
set "num_max=5"
set "my_num=123"
FOR /F "delims=" %%A IN ('powershell -NoLogo -NoProfile -Command "'%my_num%'.PadLeft(%num_max%,'0')"') DO (SET "my_num=%%~A")
ECHO my_num is %my_num%
当然,如果脚本是在PowerShell中编写的,那么就更容易了
$num_max = 5
$my_num = 123
$my_left_padded_num = "{0:$('0' * $num_max)}" -f $my_num
$my_left_padded_num
你是如此令人难以置信的接近;你只需要去掉中间的部分!从…起我的号码:!~-%num_max%!来吧!我的数量:~-%num\u max%!并回显%mynum%,而不是%my_num%。我投票决定结束,因为这两个都是打字错误,但是你做了一个很好的尝试。谢谢你的回复,但是现在输出了!我的号码:~-5!我已将这两行更改为设置mynum=!我的数量:~-%num\u max%!和echo%mynum%@SomethingDarkDo您在开始时设置了本地EnableDelayedExpansion行吗?