标题: [注册表类] [已解决]怎样用bat搜索regedit 关键字全部项,然后导出呢? [打印本页]
作者: 867258173 时间: 2014-11-5 16:24 标题: [已解决]怎样用bat搜索regedit 关键字全部项,然后导出呢?
本帖最后由 867258173 于 2014-11-6 13:10 编辑
这是个难题?需要两步骤。搜索后再导出。请大神有没方法?就要把每一个注册表项都写进去
意思是想运行regedit
然后编辑-查找-关键字
然后找到的这些项就保留下来的吧
我一般是比如【C:\Program Files\360】。【360】就是关键字。我一般就是用安装包的最后一个文件夹名当关键字搜索,知道搜索不出来就算完了。有的10多个注册表就完了。但一些大的几百个注册表。尤其是这几百个注册表搜索时难免会一直搜到子项,老有重复,工程量又大。所以请问大神有办法用批处理实现搜索regedit 关键字。去除重复的。要是有子项的,直接提取父项,忽略子项,没有父项的直接提取搜索到的子项。然后分别导出呢?请求解决
作者: apang 时间: 2014-11-5 20:27
win7 的话可以这样:- reg query "hkcr" /s /f "txt" /k
复制代码
搜索计算机,那就把根键都加上:- @echo off
- for %%a in (HKLM HKCU HKCR HKU HKCC) do (
- reg query "%%a" /s /f "txt" /k
- )
- pause
复制代码
作者: 867258173 时间: 2014-11-5 21:53
回复 2# apang
谢大神,但这代码从哪添加关键字,又怎样自动导出reg?
作者: DAIC 时间: 2014-11-5 22:02
回复 3# 867258173
reg query "hkcr" /s /f "关键字" /k
作者: 867258173 时间: 2014-11-5 22:55
回复 4# DAIC
试了下【360】当关键字单只搜索,没导出注册表啊?
作者: apang 时间: 2014-11-6 00:47
本帖最后由 apang 于 2014-11-7 10:18 编辑
回复 5# 867258173
导出到不同的reg文件- @set @n=0;/* & echo off & setlocal enabledelayedexpansion
- md "reg" 2>nul
- pushd "reg\"
- (for %%a in (HKLM HKCU HKCR HKU HKCC) do (
- set "n="
- for /f "delims=" %%b in ('reg query "%%a" /s /f "txt" /k') do (
- set /a n+=1
- reg export "%%b" %%a_!n!.reg
- )
- )) 2>nul
- dir /b *.reg | cscript -nologo -e:jscript "%~0"
- start "" ".\"
- pause & exit/b & rem */
-
- fso = new ActiveXObject("Scripting.FileSystemObject");
- while (!WScript.StdIn.AtEndOfstream) {
- file = WScript.StdIn.ReadLine();
- f = fso.OpenTextFile(file, 1, false, -1);
- txt = f.Readall();
- f.Close();
- txt = /[\s\S]*?^\[[\s\S]*?(?=^\[)/m.exec(txt + "\r\n[")[0];
- fso.OpenTextFile(file, 2, true, -1).Write(txt);
- }
复制代码
导出并合并成一个reg文件(修改第2、3行变量的值)- @set @n=0;/* & echo off
- set "keyword=txt"
- set "regfile=Result.reg"
-
- cd.>"%regfile%"
- (for %%a in (HKLM HKCU HKCR HKU HKCC) do (
- for /f "delims=" %%b in ('reg query "%%a" /s /f "%keyword%" /k')do (
- reg export "%%b" $
- copy /b "%regfile%" + $ "%regfile%"
- del $
- )
- )) 2>nul
-
- for %%a in ("%regfile%") do (
- if "%%~za" NEQ "0" (
- cscript -nologo -e:jscript "%~0" "%regfile%"
- start NotePad "%regfile%"
- ) else del "%regfile%"
- )
- pause & exit/b & rem */
-
- str = "Windows Registry Editor Version 5.00\r\n";
- regfile = WScript.Arguments(0);
- fso = new ActiveXObject("Scripting.FileSystemObject");
- f = fso.OpenTextFile(regfile, 1, false, -1);
- ar = f.Readall().split(str);
- f.Close();
- re = /^\[[\s\S]*?(?=^\[)/m;
- ar[0] = str + "\r\n";
- for (i=1; i<ar.length; i++) {
- ar[i] = re.exec(ar[i] + "\r\n[")[0];
- }
- fso.OpenTextFile(regfile, 2, true, -1).Write(ar.join(""))
复制代码
作者: DAIC 时间: 2014-11-6 08:35
回复 5# 867258173
是的,我只是告诉你如何使用 reg query 进行查询。
作者: 867258173 时间: 2014-11-6 12:33
本帖最后由 867258173 于 2014-11-6 13:10 编辑
回复 6# apang
谢大神,成功导出了。这代码能增加个将子目录reg文件夹注册表合并成一个注册表吗?没有空行。
作者: apang 时间: 2014-11-7 10:21
回复 8# 867258173
6楼已修改,试试
作者: 867258173 时间: 2014-11-7 12:47
本帖最后由 867258173 于 2014-11-7 12:49 编辑
回复 9# apang
谢大神,已成功
作者: hnldwhm52 时间: 2014-11-9 17:32
xuexixiexie!!!!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |