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