Board logo

标题: [数值计算] 批处理十进制转十六进制提示找不到操作数 [打印本页]

作者: smtcao008    时间: 2020-8-14 09:36     标题: 批处理十进制转十六进制提示找不到操作数

这是帖子里大神写的,直接运行可以,但是我把“输入十进制数字:”弄成变量就不行了。。。。
原始如下:
  1. @echo off
  2. set f=0123456789ABCDEF
  3. set /p num=输入十进制数字:
  4. :a
  5. set /a mod = %num% %% 16
  6. set /a num /=16
  7. set en=%mod% %en%
  8. if not %num% lss 1 (goto a)
  9. for %%i in (%en%) do (call set/p=%%f:~%%i,1%%<nul)
  10. pause>nul
复制代码
改成:
  1. @echo on
  2. set /a a=0x%b%+1      ---》F203+1
  3. echo %a%   ===61956
  4. set f=0123456789ABCDEF
  5. set /p num=%a%
  6. :a
  7. set /a mod = %num% %% 16
  8. set /a num /=16
  9. set en=%mod% %en%   ---这里会报错  提示 找不到操作数
  10. if not %num% lss 1 (goto a)
  11. for %%i in (%en%) do (call set/p=%%f:~%%i,1%%<nul)
  12. pause>nul
复制代码
还请大神指点,感激!~~~~~~
作者: Batcher    时间: 2020-8-14 10:01

回复 1# smtcao008


你的代码第5行 /p 删掉
作者: smtcao008    时间: 2020-8-14 12:49

回复 2# Batcher

你好,我才入门学习,/P 去掉后确实能得到结果了,但是结果是按如下如显示的

怎么让其输出结果为F204呢,我想让其结果可设置为我下一个变量,+1前是F203,谢谢大神!
作者: Batcher    时间: 2020-8-14 15:02

回复 3# smtcao008
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "mac=F825A3BCF203"
  4. echo %mac%
  5. REM echo set a=%mac:~0,8% > a.bat   -----取前8位
  6. REM echo set b=%mac:~-4% > b.bat   -----取后四位   F203
  7. REM call b.bat
  8. set "b=%mac:~-4%"
  9. REM 备注 F203+1
  10. set /a c=0x%b%+1
  11. REM 备注结果 61956
  12. echo %c%
  13. set "f=0123456789ABCDEF"
  14. set "num=%c%"
  15. :a
  16. set /a mod=num%%16
  17. set /a num=num/16
  18. set "en=!mod! !en!"
  19. if not !num! lss 1 (
  20.     goto :a
  21. )
  22. set NewMac=%mac:~0,8%
  23. for %%i in (!en!) do (
  24.     set NewMac=!NewMac!!f:~%%i,1!
  25. )
  26. echo,!NewMac!
  27. pause
复制代码

作者: smtcao008    时间: 2020-8-14 15:13

回复 4# Batcher


    windows10下运行无结果
没有换算出来的样子
作者: smtcao008    时间: 2020-8-14 15:18

回复 5# smtcao008
将感叹号改成%运行如下,我是小白  ! 用处不明白,所以尝试失败后更改运行的,见谅!
作者: Batcher    时间: 2020-8-14 15:45

回复 5# smtcao008


    从这个截图来看,你执行的不是4楼的代码。请直接复制粘贴4楼代码不要做任何修改。如果还是不行,请把 bat 文件打包压缩传上来我试试。
作者: yhcfsr    时间: 2020-8-15 08:28

  1. @echo off
  2. set /p "num=输入十进制数:"
  3. powershell -NOLOGO (%num%).toString('X')
  4. pause>NUL
复制代码

作者: smtcao008    时间: 2020-8-15 12:38

回复 7# Batcher
就是这个,我上传了,纯批处理的暂时没结果,还请指教,感谢!
作者: Batcher    时间: 2020-8-17 08:51

回复 9# smtcao008


你上传的这个附件里有两个脚本:
222.bat
BOM.bat
首先,请尝试Q-04的方法处处理一下
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ

其次,这些脚本跟4楼的代码不一样,为啥不直接试试4楼代码呢(不要做任何修改)?
作者: smtcao008    时间: 2020-8-17 09:17

回复 10# Batcher


    谢谢解答!学习到了,感谢!




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2