Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 如何使用cmd在注册表中循环_Loops_Variables_Batch File_Registry - Fatal编程技术网

Loops 如何使用cmd在注册表中循环

Loops 如何使用cmd在注册表中循环,loops,variables,batch-file,registry,Loops,Variables,Batch File,Registry,我想 循环一个注册表路径-比如说HKLM\SOFTWARE\Wow6432Node\Mozilla\Firefox,它有几个子路径(在我的例子中是数据库,比如DB1、DB2、DB3),比如Firefox、Mozilla Firefox、Developer Edition等等 获取每个子路径并将一个(始终相同的)键放入其中 很遗憾,我在使用for/f…%%时遇到问题a(cmd表示此时始终%%a是意外的) 我会有一个字符串(比如reg query HKEY_LOCAL_MACHINE\SOFTWAR

我想

  • 循环一个注册表路径-比如说
    HKLM\SOFTWARE\Wow6432Node\Mozilla\Firefox
    ,它有几个子路径(在我的例子中是数据库,比如DB1、DB2、DB3),比如Firefox、Mozilla Firefox、Developer Edition等等
  • 获取每个子路径并将一个(始终相同的)键放入其中
  • 很遗憾,我在使用for/f…%%时遇到问题a(cmd表示此时始终%%a是意外的)

    我会有一个字符串(比如
    reg query HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Firefox\DB1\\\|findstr/I“DB”| findstr/V“Test”
    ),但是在for/f中使用这个“命令”。。。('')命令说我不能使用管道

    所以我需要处理子路径(DB1、DB2、Mozilla、Mozilla Firefox)。 此外,请帮助我找到一种方法,在
    HKEY\U LOCAL\U MACHINE\SOFTWARE\Wow6432Node\Firefox\
    之后将键名变灰,这样我就可以在变量中填入“DB1”

    如果我有这个值,我会添加一个静态值,比如“reg add
    HKEY\U LOCAL\U MACHINE\SOFTWARE\Mozilla\Firefox\Extensions/t reg\U DWORD/d 0x15F90/f


    Soleni

    尝试以下批处理文件(RegLoopValue.cmd):

    @echo off 
    setlocal
    for /f "tokens=*" %%k in ('reg query HKLM\SOFTWARE\Wow6432Node\Mozilla\Firefox') do (
      echo reg add %%k\Extensions /t REG_DWORD /d 0x15F90 /f
      )
    endlocal
    
    > RegLoopValue.cmd
    reg add HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Mozilla\Firefox\Extensions\Extensions /t REG_DWORD /d 0x15F90 /f
    reg add HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Mozilla\Firefox\TaskBarIDs\Extensions /t REG_DWORD /d 0x15F90 /f
    
    注:

    • 当您对批处理文件满意时,在
      reg add
      之前删除
      echo
    示例输出(在我的系统上):

    @echo off 
    setlocal
    for /f "tokens=*" %%k in ('reg query HKLM\SOFTWARE\Wow6432Node\Mozilla\Firefox') do (
      echo reg add %%k\Extensions /t REG_DWORD /d 0x15F90 /f
      )
    endlocal
    
    > RegLoopValue.cmd
    reg add HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Mozilla\Firefox\Extensions\Extensions /t REG_DWORD /d 0x15F90 /f
    reg add HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Mozilla\Firefox\TaskBarIDs\Extensions /t REG_DWORD /d 0x15F90 /f
    

    进一步阅读
    • -对于所有与Windows命令行相关的内容都是一个很好的参考
    • -根据另一个命令的结果循环命令
    • -读取、设置或删除注册表项和值,从.REG文件保存和还原

    很难阅读您的代码,您不认为吗?请重新格式化您的问题!使用代码示例
    {}
    按钮或Ctrl+K!然后至少阅读!如果您在命令行中使用由
    for/F
    解析的管道,您需要像
    ^
    一样对其进行转义…最后我这样做了:
    {@echo on for/F%%I in('dir%1/b/o:gn^ findstr DB_NAME*%2*')do echo reg add HKLM\SOFTWARE\Wow6432Node\%SOFTWARENAME%\%i\%i\CLIENT\SWITCHES/v%KEYNAME\u TO\u add%/t regu SZ-d”%VALUE%/f for/f%%i in('dir%1/b/o:gn^ findstr DB\%NAME*%2*')do reg add HKLM\SOFTWARE\Wow6432Node\%i\SWITCHES%i\SOFTWARENAME%%i\KEYNAME%/v%i\keyu“/f pause}
    我无法理解代码块,抱歉……:)谢谢大家的帮助!