Board logo

标题: [注册表类] 批处理命令Reg Query /v时如何提取主键路径? [打印本页]

作者: jason128    时间: 2014-12-18 10:00     标题: 批处理命令Reg Query /v时如何提取主键路径?

本帖最后由 pcl_test 于 2016-11-28 10:00 编辑

工作中需要用到批处理命令.刚接触一天.
我原本的目的是想要得到路径然后删除里面的net键的..但是遇到了双数行不是路径的问题.
先贴上我的代码
  1. @echo off
  2. for /f  "tokens=* delims= " %%a in ('Reg Query "HKEY_LOCAL_MACHINE\SOFTWARE\Adobe" /s /v "net" ') do (
  3. echo %%a
  4. )
  5. pause
复制代码
运行这行代码得到如下的结果:
HKEY_LOCAL_MACHINE\SOFTWARE\Adobe
net    REG_SZ
HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Adobe Bridge
net    REG_SZ
HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\DefaultLanguage
net    REG_EXPAND_SZ
HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\net
net    REG_SZ
HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\net\111
net    REG_BINARY
搜索结束: 找到 5 匹配。
请按任意键继续. . .

希望各位大大能帮忙解决一下.
作者: DAIC    时间: 2014-12-18 10:31

  1. @echo off
  2. for /f "delims=" %%i in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Adobe" /s /v "net" ^| findstr "HKEY_LOCAL_MACHINE"') do (
  3.     echo %%i
  4. )
  5. pause
复制代码
这样可以把双数行去掉
作者: jason128    时间: 2014-12-18 11:37

回复 2# DAIC
非常感谢..我重新整合了代码..发现在删除的过程中遇到空格就会抛出这样的错误.
  1. @echo off
  2. ::path
  3. ::keyword
  4. ::bakfile
  5. set path=HKEY_LOCAL_MACHINE\SOFTWARE\Adobe
  6. set keyword=net
  7. set bakfile=C:\reg4d36e972Bak.reg
  8. ::Bak up reg
  9. reg export %path% %bakfile%
  10. ::Iterate out put path\keywords and delete
  11. for /f "tokens=* delims= " %%i in ('reg query %path% /s /v %keyword% ^| findstr %path%') do (
  12. echo %%i
  13. reg delete %%i /v %keyword%
  14. )
  15. ::"reg delete %%a /f"
  16. ::"reg delete
  17. pause
复制代码
HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Adobe Bridge
错误: 无效语法。
键入 "REG DELETE /?" 了解用法信息。
作者: jason128    时间: 2014-12-18 12:15

回复 3# jason128


    已经解决了.原来是路径要引号的问题.




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2