找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 32193|回复: 10

[数值计算] 批处理十进制转十六进制提示找不到操作数

[复制链接]
发表于 2020-8-14 09:36:45 | 显示全部楼层 |阅读模式
这是帖子里大神写的,直接运行可以,但是我把“输入十进制数字:”弄成变量就不行了。。。。
原始如下:
  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
复制代码
还请大神指点,感激!~~~~~~
发表于 2020-8-14 10:01:42 | 显示全部楼层
回复 1# smtcao008


你的代码第5行 /p 删掉
 楼主| 发表于 2020-8-14 12:49:08 | 显示全部楼层
回复 2# Batcher

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

怎么让其输出结果为F204呢,我想让其结果可设置为我下一个变量,+1前是F203,谢谢大神!
发表于 2020-8-14 15:02:48 | 显示全部楼层
回复 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
复制代码
 楼主| 发表于 2020-8-14 15:13:48 | 显示全部楼层
回复 4# Batcher


    windows10下运行无结果
没有换算出来的样子
 楼主| 发表于 2020-8-14 15:18:20 | 显示全部楼层
回复 5# smtcao008
将感叹号改成%运行如下,我是小白  ! 用处不明白,所以尝试失败后更改运行的,见谅!
发表于 2020-8-14 15:45:44 | 显示全部楼层
回复 5# smtcao008


    从这个截图来看,你执行的不是4楼的代码。请直接复制粘贴4楼代码不要做任何修改。如果还是不行,请把 bat 文件打包压缩传上来我试试。
发表于 2020-8-15 08:28:11 | 显示全部楼层
  1. @echo off
  2. set /p "num=输入十进制数:"
  3. powershell -NOLOGO (%num%).toString('X')
  4. pause>NUL
复制代码
 楼主| 发表于 2020-8-15 12:38:32 | 显示全部楼层
回复 7# Batcher
就是这个,我上传了,纯批处理的暂时没结果,还请指教,感谢!
发表于 2020-8-17 08:51:57 | 显示全部楼层
回复 9# smtcao008


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

其次,这些脚本跟4楼的代码不一样,为啥不直接试试4楼代码呢(不要做任何修改)?
 楼主| 发表于 2020-8-17 09:17:19 | 显示全部楼层
回复 10# Batcher


    谢谢解答!学习到了,感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 04:32 , Processed in 0.020270 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表