bat循环获取注册表下表项

在网上搜索了一下用bat读取一个注册表里面的表项名称,如果一个注册表里面后很多子项目名称,那我们这么才能全部读取出来了?但是网上大家看到的根本不是自己的要的,还不能用报错。。。

下面亲测,直接通过cmd命令 循环赋值显示表项名称。

1、先读取一个注册表路径,显示里面所有的值。

2、读取后是显示的是全部路径加名称,这个需要截取不要的,只保留我们需要的名称

例子:HKEY_CURRENT_USER\System 下的所有项目名称

@echo off
Setlocal enabledelayedexpansion
reg query "HKEY_CURRENT_USER\System"
echo "<<<<以上显示所有完整路径<<<<<<<"
set /A V= 0
for /f "tokens=3 delims=\" %%i in ('reg query "HKEY_CURRENT_USER\System"') do (
echo %%i
echo ------!V!-----
set /A V+= 1
)
pause

复制

下面注释:

delims=\ //路径的分割符号

tokens=3 //从左道右第几个分割符

查看效果,新建记事本文件,把上面的代码复制到里面,保存后把扩展改为bat即可。双击bat文件即可看结果。代码只运行windows电脑系统,其他系统不知

 

 

出处:http://huojibk.com/2022/08/1075.html

==================================

Bat获取注册表的值

应用场景

学习过程中遇到需要获取某注册表的场景:根据注册表的位置获取特定项的值。本文以钉钉为例

实现过程

找到注册表的位置

钉钉注册表的位置为:

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\钉钉

获取该位置下的某个注册表项

我们需要获取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

该语句的输出为:
在这里插入图片描述
注:输出结果如果不要引号最后一句可改为

if not "!var:~-1!"=="=" set value=!str:~-1!C:!var!

扩展内容

判断注册表值是否存在。

@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

 

 

出处:https://blog.csdn.net/weixin_43203591/article/details/116096275

posted on 2023-04-27 16:23  jack_Meng  阅读(161)  评论(0编辑  收藏  举报

导航