标题: [注册表类] [已解决]批处理怎么把读到的注册表指定项的16进制数值转成10进制? [打印本页]
作者: xiaoyuwxz 时间: 2010-12-2 16:21 标题: [已解决]批处理怎么把读到的注册表指定项的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 编辑 ]
作者: FOR 时间: 2010-12-2 20:10
- @echo off
- set /a n=0xd3d
- echo %n%
- pause
复制代码
作者: hfg1977 时间: 2010-12-2 20:13
- 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%)
复制代码
作者: xiaoyuwxz 时间: 2010-12-4 01:05
谢楼上的,但我运行它后 echo %a%是显示空白
作者: hanyeguxing 时间: 2010-12-4 07:09 标题: 回复 4楼 的帖子
set/a a=%%a&call echo %a%
如果要call这个a变量,则不能set/a a=%%a,因为call的时候使用%%,分不清楚%%a指的是set赋值的变量,还是for扩展的变量,默认for子句内,for扩展的优先,所以出错。
所以正确应该写成:- 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%%
复制代码
作者: xiaoyuwxz 时间: 2010-12-4 07:41
谢谢回复,我运行出来还是空白啊。
作者: hanyeguxing 时间: 2010-12-4 10:42
把你运行的整个代码都贴上来
作者: xiaoyuwxz 时间: 2010-12-4 11:15
- @echo off
- color 0D
- MODE con: COLS=71 LINES=25
- title 远程桌面端口修改程序
- :getport
- set /p getport=请输入需设定远程桌面的端口号:
- if /I "%getport%"=="" Goto noset else goto setport
-
- :setport
- reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Terminal Server\Wds\rdpwd\Tds\tcp" /v "PortNumber" /t REG_DWORD /d "%getport%" /f >nul
- reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Terminal Server\WinStations\RDP-Tcp" /v "PortNumber" /t REG_DWORD /d "%getport%" /f >nul
- reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Control\Terminal Server\Wds\rdpwd\Tds\tcp" /v "PortNumber" /t REG_DWORD /d "%getport%" /f >nul
- reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Control\Terminal Server\WinStations\RDP-Tcp" /v "PortNumber" /t REG_DWORD /d "%getport%" /f >nul
- reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp" /v "PortNumber" /t REG_DWORD /d "%getport%" /f >nul
- reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v "PortNumber" /t REG_DWORD /d "%getport%" /f >nul
- echo 远程桌面端口已设置为:%getport%,请牢记,按任意键退出!
- pause >nul
- goto end
-
- :noset
- echo 输入值为空,端口未改变,按任意键退出!
- pause >nul
- goto end
复制代码
这是个我做的改远程桌面端口的程序,我想在- :getport
- set /p getport=请输入需设定远程桌面的端口号:
复制代码
前显示出系统当前的远程桌面的端口
作者: hanyeguxing 时间: 2010-12-4 11:31
- @echo off&color 0D&MODE con: COLS=71 LINES=25
- title 远程桌面端口修改程序
- 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
- :getport
- set/p getport=当前远程桌面端口:%a%,请输入需设定远程桌面的端口号:
- if "%getport%"=="" (Goto noset) else goto setport
- :setport
- 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
- echo 远程桌面端口已设置为:%getport%,请牢记,按任意键退出!
- pause>nul&exit
- :noset
- echo 输入值为空,端口未改变,按任意键退出!
- pause>nul
复制代码
[ 本帖最后由 hanyeguxing 于 2010-12-4 11:43 编辑 ]
作者: xiaoyuwxz 时间: 2010-12-4 13:57
才发现竟然是系统不同而不同,
刚在VM里装上XP,在XP下是正常的,而我使用的2003里却无法显示,这两个版本的CMD不同啊。
如果是在2003里应该怎么改呢,主要应用在2003系统上。
[ 本帖最后由 xiaoyuwxz 于 2010-12-4 13:59 编辑 ]
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |