Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
130 views
in Technique[技术] by (71.8m points)

Batch auto answer "y" if registry key values exists

I'm really not used to use batchs...So i'm stuck on a problem : I want to ADD some registry key values but it will prompt :

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

So i would like to make if key value exists echo y and press <enter>

else reg ADD the value....

The fact is i am totally lost in writing batch files, i tried this but i don't know how to make the IF statement...And even less how to automatize the prompt answer !

@echo off

reg query HKLMSOFTWAREWow6432NodeNtreevPangYa_Th /v Patcher || REG ADD HKLMSOFTWAREWow6432NodeNtreevPangYa_Th /v Patcher /t REG_EXPAND_SZ /d "Updater_Launcher_ENG.exe"

REG query HKLMSOFTWAREWow6432NodeNtreevPangYa_Th /v PatchNum /t REG_EXPAND_SZ /d "184" || REG ADD HKLMSOFTWAREWow6432NodeNtreevPangYa_Th /v PatchNum /t REG_EXPAND_SZ /d "184"

REG query HKLMSOFTWAREWow6432NodeNtreevPangYa_Th /v IntegratedPak /t REG_EXPAND_SZ /d "projectg500+.pak" || REG ADD HKLMSOFTWAREWow6432NodeNtreevPangYa_Th /v IntegratedPak /t REG_EXPAND_SZ /d "projectg500+.pak"

REG query HKLMSOFTWAREWow6432NodeNtreevPangYa_Th /v Ver /t REG_EXPAND_SZ /d "TH.R4.584.04" || REG ADD HKLMSOFTWAREWow6432NodeNtreevPangYa_Th /v Ver /t REG_EXPAND_SZ /d "TH.R4.584.04"

REG query HKLMSOFTWAREWow6432NodeNtreevPangYa_Th /v Launcher Version /t REG_EXPAND_SZ /d "v3.1" || REG ADD HKLMSOFTWAREWow6432NodeNtreevPangYa_Th /v Launcher Version /t REG_EXPAND_SZ /d "v3.1"

REG query HKLMSOFTWAREWow6432NodeNtreevPangYa_Th /v Install_Dir /t REG_EXPAND_SZ /d "C:Pangya eXtremV2" || REG ADD HKLMSOFTWAREWow6432NodeNtreevPangYa_Th /v Install_Dir /t REG_EXPAND_SZ /d "C:Pangya eXtremV2"

REG query HKLMSOFTWAREWow6432NodeNtreevPangYa_Th /v Argument /t REG_EXPAND_SZ /d "not_used" || REG ADD HKLMSOFTWAREWow6432NodeNtreevPangYa_Th /v Argument /t REG_EXPAND_SZ /d "not_used"

REG query HKLMSOFTWAREWow6432NodeNtreevPangYa_Th /v Launcher Version /t REG_EXPAND_SZ /d "v3.1" || REG ADD HKLMSOFTWAREWow6432NodeNtreevPangYa_Th /v Launcher Version /t REG_EXPAND_SZ /d "v3.1"

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

As already mentioned in your subsequent answer, you should use the /F option with Add to force the overwriting of existing value data. Please open a Command Prompt window type reg /? and press the ENTER key to read the usage information.

However, there were several other issues with what you've posted, so I have rewritten the entire thing for you in two possible formats, (as I was unsure of your true intention).

Please note that I have made several, more appropriate, changes to what you posted, please do not modify any of the content I have posted, it has been written using the correct syntax, keys, values and data. Please also remember that this code is adding to a protected area of the Windows registry, so you must be running this script elevated or as a user with the required permissions.


This is how I'd suggest you perform the task, if you only want to add all of the registry keys, if there is already an existing value named Patcher:

@Echo Off
SetLocal EnableExtensions

Set "Key=HKLMSOFTWARENtreevPangYa_Th"
Set "Reg=%SystemRoot%System32
eg.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
)

If you simply want to add all of the data regardless of any existing values, then just this would be all you need:

@Echo Off
SetLocal EnableExtensions

Set "Key=HKLMSOFTWARENtreevPangYa_Th"
Set "Reg=%SystemRoot%System32
eg.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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...