通过批处理文件检查Windows注册表中是否存在密钥


6

我担任公共服务的IT支持。

我们必须定期完成的一些工作是安装由我们自己的开发人员开发的一些软件。我们通常将其作为程序来执行,在某些情况下,我们不知道我们在做什么,知道该怎么做。在某些情况下,手头的任务是在Windows注册表中添加一些注册码。但由于这些程序中有许多依赖于基本相同的数据库,因此已经应用了一些步骤。我正在开发批处理文件以检查已经执行和未执行的步骤。

所以我想知道我是否有一个注册表文件,在Windows注册表中有很多要编辑的条目,我可以使用相同的条目来检查它们是否已经应用于注册表。如果我可以将注册表项的内容复制到批处理文件以检查条目,或者我是否需要同时发送批处理文件和密钥文件来执行此过程。


有大量的步骤,并且支持是远程的,因此仅应用尚未采取的步骤将是有趣的。
Vinícius Simões

我需要在注册表中可能存在或不存在的内容和密钥之间进行条件检查。而我们正在谈论大量的钥匙,在数十家。
Vinícius Simões

我不是非常热衷于批处理脚本,命令行或Windows注册表......所以如果你愿意,可以更加自信。
Vinícius Simões

我的意思是提供更详细的答案。
Vinícius Simões

Answers:


9

如何检查Windows注册表中是否存在密钥?

这可以使用 reg query key

  • 此命令将设置 %errorlevel%

  • errorlevel=0 表示密钥存在。

  • errorlevel=1 表示密钥不存在。


如何在Windows注册表中添加密钥?

如果不存在则添加密钥使用 reg add key


批处理文件示例

@echo off
reg query mykey >nul
if %errorlevel% equ 0 (
  echo "mykey exists- do nothing"
) else (
  echo "mykey does not exist - add the key and give it a value"
  reg add mykey
  reg add mykey /v value ...
)

进一步阅读


如果我将值,数据和字符串作为参数添加到命令中,如果它们不完全匹配,它将返回errorlevel 1?
Vinícius Simões

@ViníciusSimões我不明白。你在说什么吗? query 要么 add
DavidPostill

@ViníciusSimões query 只能检查一个 valuedatastring 仅适用于 add
DavidPostill

@ViníciusSimões阅读 ss64.com/nt/reg.html
DavidPostill

我仍然在Win8.1上看到一条关于不存在键的消息,我通过追加来抑制它 2>&1
Wolf
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.