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

[注册表类] [已解决]批处理怎么把读到的注册表指定项的16进制数值转成10进制?

本帖最后由 pcl_test 于 2017-3-16 11:08 编辑

想使用reg query 读出远程桌面的16进制数字,并得到最后的代码,然后转成10进制,然后显示出来
想用它来读出端口数字,然后让用户输入数字,重设远程桌面的端口。
想要解决的问题是:

reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp" /v "PortNumber"

读出的是: PortNumber  REG_DWORD  0xd3d
这里我不会做了,0xd3d其实数据应该是d3d转成10进制就是3389,怎么进行处理得到3389
请求帮助,研究这些还是很有意思的。

[ 本帖最后由 xiaoyuwxz 于 2010-12-4 10:12 编辑 ]
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

才发现竟然是系统不同而不同,
刚在VM里装上XP,在XP下是正常的,而我使用的2003里却无法显示,这两个版本的CMD不同啊。
如果是在2003里应该怎么改呢,主要应用在2003系统上。

[ 本帖最后由 xiaoyuwxz 于 2010-12-4 13:59 编辑 ]

TOP

  1. @echo off&color 0D&MODE con: COLS=71 LINES=25
  2. title 远程桌面端口修改程序
  3. for /f "skip=4 tokens=3" %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp" /v PortNumber') do set/a a=%%a
  4. :getport
  5. set/p getport=当前远程桌面端口:%a%,请输入需设定远程桌面的端口号:
  6. if "%getport%"=="" (Goto noset) else goto setport
  7. :setport
  8. for %%a in (ControlSet001 ControlSet002 CurrentControlSet) do for %%b in (Wds\rdpwd\Tds\tcp WinStations\RDP-Tcp) do reg add "HKLM\SYSTEM\%%a\Control\Terminal Server\%%b" /v PortNumber /t REG_DWORD /d %getport% /f
  9. echo 远程桌面端口已设置为:%getport%,请牢记,按任意键退出!
  10. pause>nul&exit
  11. :noset
  12. echo 输入值为空,端口未改变,按任意键退出!
  13. pause>nul
复制代码

[ 本帖最后由 hanyeguxing 于 2010-12-4 11:43 编辑 ]
1

评分人数

寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

  1. @echo off
  2. color 0D
  3. MODE con: COLS=71 LINES=25
  4. title 远程桌面端口修改程序
  5. :getport
  6. set /p getport=请输入需设定远程桌面的端口号:
  7. if /I "%getport%"=="" Goto noset else goto setport
  8. :setport
  9. reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Terminal Server\Wds\rdpwd\Tds\tcp" /v "PortNumber" /t REG_DWORD /d "%getport%" /f >nul
  10. reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Terminal Server\WinStations\RDP-Tcp" /v "PortNumber" /t REG_DWORD /d "%getport%" /f >nul
  11. reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Control\Terminal Server\Wds\rdpwd\Tds\tcp" /v "PortNumber" /t REG_DWORD /d "%getport%" /f >nul
  12. reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Control\Terminal Server\WinStations\RDP-Tcp" /v "PortNumber" /t REG_DWORD /d "%getport%" /f >nul
  13. reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp" /v "PortNumber" /t REG_DWORD /d "%getport%" /f >nul
  14. reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v "PortNumber" /t REG_DWORD /d "%getport%" /f >nul
  15. echo 远程桌面端口已设置为:%getport%,请牢记,按任意键退出!
  16. pause >nul
  17. goto end
  18. :noset
  19. echo 输入值为空,端口未改变,按任意键退出!
  20. pause >nul
  21. goto end
复制代码
这是个我做的改远程桌面端口的程序,我想在
  1. :getport
  2. set /p getport=请输入需设定远程桌面的端口号:
复制代码
前显示出系统当前的远程桌面的端口

TOP

把你运行的整个代码都贴上来
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

谢谢回复,我运行出来还是空白啊。

TOP

回复 4楼 的帖子

set/a a=%%a&call echo %a%
如果要call这个a变量,则不能set/a a=%%a,因为call的时候使用%%,分不清楚%%a指的是set赋值的变量,还是for扩展的变量,默认for子句内,for扩展的优先,所以出错。
所以正确应该写成:
  1. for /f "skip=4 tokens=3" %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp" /v PortNumber') do set/a b=%%a&call echo %%b%%
复制代码
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

谢楼上的,但我运行它后 echo %a%是显示空白

TOP

  1. for /f "skip=4 tokens=3" %%a in ('reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp" /v "PortNumber"') do (set/a a=%%a&call echo %a%)
复制代码

TOP

  1. @echo off
  2. set /a n=0xd3d
  3. echo %n%
  4. pause
复制代码

TOP

返回列表