使用批处理脚本在字符串中插入char

时间:2018-09-12 10:56:27

标签: batch-file

从批处理脚本中,我从注册表中获取值: 32000000800A00004C00000000180000ED00000000180000。其中包含3个值,每个值包含16个字符。如何获得3个单独的值?我试过使用for循环,但据我了解,需要使用定界符和令牌。我尝试在每16个字符后添加“-”,但失败了。有人可以帮我吗?
预期o / p:32000000800A0000-4C00000000180000-ED00000000180000。

2 个答案:

答案 0 :(得分:1)

@echo off
setlocal

set "value=32000000800A00004C00000000180000ED00000000180000"

call :binary "%value%"
if defined newvalue set "newvalue=%newvalue:~0,-1%"

echo "%newvalue%"
exit /b

:binary
set "chunk=%~1"
set "newvalue=%newvalue%%chunk:~,16%-"
set "value=%value:~16%"
if defined value call :binary "%value%"

这每16个字符获取一次,并附加一个-作为分隔符。

将调用标签:binary。名为chunk的变量 获取第一个参数的值。 newvalue获得价值 后16个字符,并附加-value被修剪 开头的16个字符(如果仍然定义)中的:binary 再次调用label做下16个字符。

完成后,修剪尾随-,然后期望 结果32000000800A0000-4C00000000180000-ED00000000180000

答案 1 :(得分:0)

您可以使用以下格式的内容:

(用于保存输入内容的较小示例123456789-> 123-456-789)

set xx=123456789
echo %xx:~0,3%-%xx:~3,3%-%xx:~6,3%

或者也许...

set xx=32000000800A00004C00000000180000ED00000000180000
echo %xx:~0,16%-%xx:~16,16%-%xx:~32,16%