找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 33703|回复: 8

[注册表类] [已解决]批处理如何导出注册表指定的项?

[复制链接]
发表于 2011-5-29 02:37:55 | 显示全部楼层 |阅读模式
本帖最后由 e98123 于 2019-2-28 08:15 编辑

set REGFILE=a.reg
set KEYNAME=HKEY_CURRENT_USER\Environment

echo Windows Registry Editor Version 5.00>%REGFILE%
echo [%KEYNAME%]>>%REGFILE%
reg export "%KEYNAME%" export.bak
type export.bak|find /i """TEMP""">>%REGFILE%

1、以上export.bak导出的内容为:
[HKEY_CURRENT_USER\Environment]
"TEMP"=hex(2):25,00,55,00,53,00,45,00,52,00,50,00,52,00,4f,00,46,00,49,00,4c,\
  00,45,00,25,00,5c,00,4c,00,6f,00,63,00,61,00,6c,00,20,00,53,00,65,00,74,00,\
  74,00,69,00,6e,00,67,00,73,00,5c,00,54,00,65,00,6d,00,70,00,00,00
"TMP"=hex(2):25,00,55,00,53,00,45,00,52,00,50,00,52,00,4f,00,46,00,49,00,4c,00,\
  45,00,25,00,5c,00,4c,00,6f,00,63,00,61,00,6c,00,20,00,53,00,65,00,74,00,74,\
  00,69,00,6e,00,67,00,73,00,5c,00,54,00,65,00,6d,00,70,00,00,00

2、取TEMP后,在a.reg中只能得到:(只有1行)
"TEMP"=hex(2):25,00,55,00,53,00,45,00,52,00,50,00,52,00,4f,00,46,00,49,00,4c,\

3、请问有什么方法可以完整地得到:(完整3行)
"TEMP"=hex(2):25,00,55,00,53,00,45,00,52,00,50,00,52,00,4f,00,46,00,49,00,4c,\
  00,45,00,25,00,5c,00,4c,00,6f,00,63,00,61,00,6c,00,20,00,53,00,65,00,74,00,\
  74,00,69,00,6e,00,67,00,73,00,5c,00,54,00,65,00,6d,00,70,00,00,00


PS:
打算做一个注册表修改的玩意,安装时备份导出原来的设置,卸载时再导入备份时的设置,直接导入注册表REG文件比较方便,不打算使用reg add方法。
发表于 2011-5-29 10:18:32 | 显示全部楼层
也许可以参考下前几天的帖子:
http://bbs.bathome.net/thread-12530-1-2.html
 楼主| 发表于 2011-5-29 10:33:17 | 显示全部楼层
也许可以参考下前几天的帖子:
http://bbs.bathome.net/thread-12530-1-2.html
zm900612 发表于 2011-5-29 10:18

我现在不是在导出上有问题,而是要取出标签TEMP,的完整多行内容;
"TEMP"=hex(2):25,00,55,00,53,00,45,00,52,00,50,00,52,00,4f,00,46,00,49,00,4c,\
  00,45,00,25,00,5c,00,4c,00,6f,00,63,00,61,00,6c,00,20,00,53,00,65,00,74,00,\
  74,00,69,00,6e,00,67,00,73,00,5c,00,54,00,65,00,6d,00,70,00,00,00
发表于 2011-5-29 10:44:00 | 显示全部楼层
  1. @echo off
  2. for /f "tokens=1* delims==" %%a in (1.txt) do (
  3.    if /i %%~a==temp set "regtmp=%%b"&echo %%a=%%b
  4.    if defined regtmp if "%%b"=="" (
  5.       echo    %%a
  6.    ) else set regtmp=
  7. )
  8. pause
复制代码
 楼主| 发表于 2011-5-29 10:56:30 | 显示全部楼层
@echo off
for /f "tokens=1* delims==" %%a in (1.txt) do (
   if /i %%~a==temp set "regtmp=%%b"&echo %%a=%%b
   if defined regtmp if "%%b"=="" (
      echo    %%a
   ) else set regtmp=
)
pause
zm900612 发表于 2011-5-29 10:44


假设1.TXT的内容为:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Environment]
"TEMP"=hex(2):25,00,55,00,53,00,45,00,52,00,50,00,52,00,4f,00,46,00,49,00,4c,\
  00,45,00,25,00,5c,00,4c,00,6f,00,63,00,61,00,6c,00,20,00,53,00,65,00,74,00,\
  74,00,69,00,6e,00,67,00,73,00,5c,00,54,00,65,00,6d,00,70,00,00,00
"TMP"=hex(2):25,00,55,00,53,00,45,00,52,00,50,00,52,00,4f,00,46,00,49,00,4c,00,\
  45,00,25,00,5c,00,4c,00,6f,00,63,00,61,00,6c,00,20,00,53,00,65,00,74,00,74,\
  00,69,00,6e,00,67,00,73,00,5c,00,54,00,65,00,6d,00,70,00,00,00


贴出的代码运行后无任何返回?
 楼主| 发表于 2011-5-29 11:14:46 | 显示全部楼层
我有个思路不知行不行得通?

"TEMP"=为起始,"TMP"开头的"为终止,这样的语名应该怎么写呢?
发表于 2011-5-29 11:43:13 | 显示全部楼层
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1* delims==" %%a in (1.txt) do (
  4.    if "%%b" neq "" set regtmp=
  5.    if defined regtmp echo %%a
  6.    if /i %%~a==temp (set "regtmp=."&echo %%a=%%b)
  7. )
  8. pause
复制代码
 楼主| 发表于 2011-5-29 12:50:27 | 显示全部楼层
@echo off
setlocal enabledelayedexpansion
for /f "tokens=1* delims==" %%a in (1.txt) do (
   if "%%b" neq "" set regtmp=
   if defined regtmp echo %%a
   if /i %%~a==temp (set "regtmp=."&echo %%a ...
zm900612 发表于 2011-5-29 11:43

只显示了请按任意键继续......
发表于 2011-5-29 12:57:02 | 显示全部楼层
测试过的,这样还不行那我也不知道了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 02:26 , Processed in 0.021772 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表