用bat取得注册表中的键值--转
https://blog.csdn.net/weixin_43203591/article/details/116096275
注意:结果中可能会多个C,只要把if not "!var:~-1!"=="=" set value="!str:~-1!C:!var!"中的C去掉就行了
应用场景
学习过程中遇到需要获取某注册表的场景:根据注册表的位置获取特定项的值。本文以钉钉为例。
实现过程
找到注册表的位置
钉钉注册表的位置为:
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\钉钉
1
获取该位置下的某个注册表项
我们需要获取UninstallString项
对应的BAT语句为,/v之前为注册表的位置,/v之后为所需要的的注册表项。
REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\钉钉" /v "UninstallString"
输出如下:
获取该项的值
此时我们已经找到了该项,接下来需要输出该项的值。可以看到输出了两行内容,一行为注册表位置,一行为注册表项。获取注册表值的BAT语句为:
@echo off
Setlocal enabledelayedexpansion
for /f "skip=1 delims=: tokens=1,*" %%i in ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\钉钉" /v "UninstallString"') do (
set str=%%i
set var=%%j
set "var=!var:"=!"
if not "!var:~-1!"=="=" set value="!str:~-1!C:!var!"
)
echo %value%
pause
1
2
3
4
5
6
7
8
9
10
该语句的输出为:
注:输出结果如果不要引号最后一句可改为
if not "!var:~-1!"=="=" set value=!str:~-1!C:!var!
1
扩展内容
判断注册表值是否存在。
@echo off
reg query HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\钉钉 >nul 2>nul&&goto A||goto B
:A
echo 存在
pause
exit
:B
echo 不存在
pause
exit
pause
1
2
3
4
5
6
7
8
9
10
11
————————————————
版权声明:本文为CSDN博主「郎家岭伯爵」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43203591/article/details/116096275
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义