[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[数值计算] 批处理如何实现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

请教, 谢谢了!
1

评分人数

    • pcl_test: 发帖前先使用论坛搜索PB -2

把4C3003876B4283208拆分为4C3003876B428和3208,对3208进行自增1后与4C3003876B428拼接
  1. set /a a=0x3208+1
  2. cmd /c exit /b %a%
  3. echo;4C3003876B428%=exitcode:~-4%
  4. pause
复制代码
1

评分人数

TOP

本帖最后由 aa77dd@163.com 于 2016-10-17 23:35 编辑
  1. @echo off & setlocal EnableDelayedExpansion
  2. <SN.txt set /p "p="
  3. set "Q=#%p%"
  4. echo;%p%
  5. set "newSN="
  6. set "JW=1"
  7. for /L %%i in (-1 -1 -50) do (
  8.     if not "!Q:~%%i,1!"=="#" (
  9.         if !JW!==0 (
  10.             set "newSN=!Q:~%%i,1!!newSN!"
  11.         ) else (
  12.             set /a "bit=0x!Q:~%%i,1! + JW, JW=^!(bit-16)"
  13.             cmd /c exit /b !bit!
  14.             set "newSN=!=exitcode:~-1!!newSN!"
  15.         )
  16.     )
  17. )
  18. echo;newSN:&echo;!newSN!
  19. (>SN.txt echo;!newSN!)
  20. pause
  21. exit
复制代码

TOP

回复 3# aa77dd@163.com

可进一步判断如果没有进位则余下位不再处理
1

评分人数

TOP

非常感谢各位大侠

TOP

返回列表