标题: [数值计算] 批处理如何实现16进制/十六进制数字的递加/自增运算 [打印本页]
作者: hzlawh 时间: 2016-10-17 20:02 标题: 批处理如何实现16进制/十六进制数字的递加/自增运算
本帖最后由 pcl_test 于 2016-10-17 21:18 编辑
set /p p=<SN.txt
echo %p%
set /a p=p+1
set "pp=%p%"
echo %pp% >SN.txt
echo sh.SendKeys "%p%{ENTER}">>telnet_tmp.vbs
echo WScript.Sleep 1000 >>telnet_tmp.vbs
这样出来的结果不能处理16进制的。 请教完整的每次运行自动对一个形如4C3003876B4283208的文本自动进位。 第一次运行输出4C3003876B4283208 第二次4C3003876B4283209
第三次4C3003876B428320A ................... 4C3003876B4283210 .....4C3003876B428321F....4C3003876B4283220
请教, 谢谢了!
作者: pcl_test 时间: 2016-10-17 21:02
把4C3003876B4283208拆分为4C3003876B428和3208,对3208进行自增1后与4C3003876B428拼接
如- set /a a=0x3208+1
- cmd /c exit /b %a%
- echo;4C3003876B428%=exitcode:~-4%
- pause
复制代码
作者: aa77dd@163.com 时间: 2016-10-17 21:37
本帖最后由 aa77dd@163.com 于 2016-10-17 23:35 编辑
- @echo off & setlocal EnableDelayedExpansion
- <SN.txt set /p "p="
- set "Q=#%p%"
- echo;%p%
- set "newSN="
- set "JW=1"
- for /L %%i in (-1 -1 -50) do (
-
- if not "!Q:~%%i,1!"=="#" (
-
- if !JW!==0 (
- set "newSN=!Q:~%%i,1!!newSN!"
- ) else (
- set /a "bit=0x!Q:~%%i,1! + JW, JW=^!(bit-16)"
-
- cmd /c exit /b !bit!
-
- set "newSN=!=exitcode:~-1!!newSN!"
- )
- )
-
- )
- echo;newSN:&echo;!newSN!
- (>SN.txt echo;!newSN!)
- pause
- exit
复制代码
作者: pcl_test 时间: 2016-10-17 23:17
回复 3# aa77dd@163.com
可进一步判断如果没有进位则余下位不再处理
作者: hzlawh 时间: 2016-11-19 12:58
非常感谢各位大侠
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |