如果存在注册表项值,则批量自动回答 "y"

Batch auto answer "y" if registry key values exists

我真的不习惯使用批处理...所以我遇到了一个问题:我想添加一些注册表项值,但它会提示:

"key alreday exists, overwrite it (yes/no) ?"

所以我想if key value exists echo y and press <enter>

else reg ADD 值....

事实是我完全迷失在编写批处理文件中,我尝试了这个但我不知道如何制作 IF 语句...更不知道如何自动提示答案!

@echo off

reg query HKLM\SOFTWARE\Wow6432Node\Ntreev\PangYa_Th /v Patcher || REG ADD HKLM\SOFTWARE\Wow6432Node\Ntreev\PangYa_Th /v Patcher /t REG_EXPAND_SZ /d "Updater_Launcher_ENG.exe"

REG query HKLM\SOFTWARE\Wow6432Node\Ntreev\PangYa_Th /v PatchNum /t REG_EXPAND_SZ /d "184" || REG ADD HKLM\SOFTWARE\Wow6432Node\Ntreev\PangYa_Th /v PatchNum /t REG_EXPAND_SZ /d "184"

REG query HKLM\SOFTWARE\Wow6432Node\Ntreev\PangYa_Th /v IntegratedPak /t REG_EXPAND_SZ /d "projectg500+.pak" || REG ADD HKLM\SOFTWARE\Wow6432Node\Ntreev\PangYa_Th /v IntegratedPak /t REG_EXPAND_SZ /d "projectg500+.pak"

REG query HKLM\SOFTWARE\Wow6432Node\Ntreev\PangYa_Th /v Ver /t REG_EXPAND_SZ /d "TH.R4.584.04" || REG ADD HKLM\SOFTWARE\Wow6432Node\Ntreev\PangYa_Th /v Ver /t REG_EXPAND_SZ /d "TH.R4.584.04"

REG query HKLM\SOFTWARE\Wow6432Node\Ntreev\PangYa_Th /v Launcher Version /t REG_EXPAND_SZ /d "v3.1" || REG ADD HKLM\SOFTWARE\Wow6432Node\Ntreev\PangYa_Th /v Launcher Version /t REG_EXPAND_SZ /d "v3.1"

REG query HKLM\SOFTWARE\Wow6432Node\Ntreev\PangYa_Th /v Install_Dir /t REG_EXPAND_SZ /d "C:\Pangya eXtremV2" || REG ADD HKLM\SOFTWARE\Wow6432Node\Ntreev\PangYa_Th /v Install_Dir /t REG_EXPAND_SZ /d "C:\Pangya eXtremV2"

REG query HKLM\SOFTWARE\Wow6432Node\Ntreev\PangYa_Th /v Argument /t REG_EXPAND_SZ /d "not_used" || REG ADD HKLM\SOFTWARE\Wow6432Node\Ntreev\PangYa_Th /v Argument /t REG_EXPAND_SZ /d "not_used"

REG query HKLM\SOFTWARE\Wow6432Node\Ntreev\PangYa_Th /v Launcher Version /t REG_EXPAND_SZ /d "v3.1" || REG ADD HKLM\SOFTWARE\Wow6432Node\Ntreev\PangYa_Th /v Launcher Version /t REG_EXPAND_SZ /d "v3.1"

好的,在尝试了这么多复杂的解决方案之后,我在文档中找到了如何在没有提示的情况下覆盖...

/f  Adds the registry entry without prompting for confirmation.

所以没关系,我有这个工作很好:

@echo off
REG ADD HKLM\SOFTWARE\Wow6432Node\Ntreev\PangYa_Th /v Patcher /t REG_EXPAND_SZ /d "Updater_Launcher_ENG.exe" /f
REG ADD HKLM\SOFTWARE\Wow6432Node\Ntreev\PangYa_Th /v PatchNum /t REG_EXPAND_SZ /d "184" /f
REG ADD HKLM\SOFTWARE\Wow6432Node\Ntreev\PangYa_Th /v IntegratedPak /t REG_EXPAND_SZ /d "projectg500+.pak" /f
REG ADD HKLM\SOFTWARE\Wow6432Node\Ntreev\PangYa_Th /v Ver /t REG_EXPAND_SZ /d "TH.R4.584.04" /f
REG ADD HKLM\SOFTWARE\Wow6432Node\Ntreev\PangYa_Th /v Launcher Version /t REG_EXPAND_SZ /d "v3.1" /f
REG ADD HKLM\SOFTWARE\Wow6432Node\Ntreev\PangYa_Th /v Install_Dir /t REG_EXPAND_SZ /d "C:\Pangya eXtremV2" /f
REG ADD HKLM\SOFTWARE\Wow6432Node\Ntreev\PangYa_Th /v Argument /t REG_EXPAND_SZ /d "not_used" /f
REG ADD HKLM\SOFTWARE\Wow6432Node\Ntreev\PangYa_Th /v Launcher Version /t REG_EXPAND_SZ /d "v3.1" /f

正如您在随后的回答中已经提到的,您应该使用 /F 选项和 Add 来强制覆盖现有的值数据。请打开命令提示符 window 键入 reg /? 并按 ENTER 键以阅读使用信息。

但是,您发布的内容还有其他几个问题,因此我以两种可能的格式为您重写了整个内容,(因为我不确定您的真实意图).

请注意,我对您发布的内容进行了一些更合适的更改,请不要修改我发布的任何内容,它是使用正确的语法、键、值和数据编写的。另请记住,此代码正在添加到 Windows 注册表的受保护区域,因此您必须 运行 提升此脚本或作为具有所需权限的用户。


如果您只想添加所有注册表项,如果已经有一个名为 Patcher:

的现有值,我建议您执行此任务
@Echo Off
SetLocal EnableExtensions

Set "Key=HKLM\SOFTWARE\Ntreev\PangYa_Th"
Set "Reg=%SystemRoot%\System32\reg.exe"

%Reg% Query "%Key%" /Reg:32 /F "Patcher" /V 1> NUL 2>&1 && (
    %Reg% Add "%Key%" /Reg:32 /V "Argument" /D "not_used" /F 1> NUL
    %Reg% Add "%Key%" /Reg:32 /V "Install_Dir" /D "\"C:\Pangya eXtremV2\"" /F 1> NUL
    %Reg% Add "%Key%" /Reg:32 /V "IntegratedPak" /D "projectg500+.pak" /F 1> NUL
    %Reg% Add "%Key%" /Reg:32 /V "Launcher Version" /D "v3.1" /F 1> NUL
    %Reg% Add "%Key%" /Reg:32 /V "Patcher" /D "Updater_Launcher_ENG.exe" /F 1> NUL
    %Reg% Add "%Key%" /Reg:32 /V "PatchNum" /D "184" /F 1> NUL
    %Reg% Add "%Key%" /Reg:32 /V "Ver" /D "TH.R4.584.04" /F 1> NUL
)

如果您只是想添加所有数据而不考虑任何现有值,那么这就是您所需要的:

@Echo Off
SetLocal EnableExtensions

Set "Key=HKLM\SOFTWARE\Ntreev\PangYa_Th"
Set "Reg=%SystemRoot%\System32\reg.exe"

%Reg% Add "%Key%" /Reg:32 /V "Argument" /D "not_used" /F 1> NUL
%Reg% Add "%Key%" /Reg:32 /V "Install_Dir" /D "\"C:\Pangya eXtremV2\"" /F 1> NUL
%Reg% Add "%Key%" /Reg:32 /V "IntegratedPak" /D "projectg500+.pak" /F 1> NUL
%Reg% Add "%Key%" /Reg:32 /V "Launcher Version" /D "v3.1" /F 1> NUL
%Reg% Add "%Key%" /Reg:32 /V "Patcher" /D "Updater_Launcher_ENG.exe" /F 1> NUL
%Reg% Add "%Key%" /Reg:32 /V "PatchNum" /D "184" /F 1> NUL
%Reg% Add "%Key%" /Reg:32 /V "Ver" /D "TH.R4.584.04" /F 1> NUL