如果条件为真,则批处理文件添加多个值
Batch File to Add Multiple Values if Condition True
我想查询注册表一个值,如果该值存在我想修改它,如果它不存在我想去下一个类似的键检查。
键:
HKCU\SOFTWARE\MySoftware[=10=]1
HKCU\SOFTWARE\MySoftware[=10=]2
HKCU\SOFTWARE\MySoftware[=10=]3
每个键的值都相同,但我需要循环检查每个键,直到检查完所有键。
我目前正在做的是:
reg query "HKCU\SOFTWARE\MySoftware[=11=]1" /v MyValue
if %ERRORLEVEL%==0 (
reg add "HKCU\SOFTWARE\MySoftware[=11=]1" /v MyValue /f /t REG_DWORD /d 10
) else (
goto :KEY2
)
这将循环遍历我需要检查和修改的所有键,但它退出了几行,我在想也许我可以构建某种类型的子例程来完成此操作,但我有点难过。
for %%a in (001 002 003) do (
reg query "HKCU\SOFTWARE\MySoftware\%%a" /v MyValue
if not errorlevel 1 (
reg add "HKCU\SOFTWARE\MySoftware\%%a" /v MyValue /f /t REG_DWORD /d 10
)
)
应该可以做到这一点。 errorlevel
以其 运行 时间值的常规方式进行解释。您需要做的就是修改括号中的列表,其中的每个值依次分配给 metavariable
%%a
以下代码查询注册表项HKEY_CURRENT_USER\SOFTWARE\MySoftware
所有直接子项,过滤名称由三位小数组成的子项,按升序循环,查询值MyValue
对于每一个,如果找到,修改相应的数据:
for /F delims^=^ eol^= %%K in ('
reg query "HKEY_CURRENT_USER\SOFTWARE\MySoftware" /K /F * ^
^| findstr "^HKEY_.*\[0-9][0-9][0-9]$" ^| sort
') do (
reg query "%%K" /V "MyValue" && reg add "%%K" /V "MyValue" /f /t REG_DWORD /d 10
)
使用的 &&
操作符让后面的命令只有在前面的命令成功时才执行。
我想查询注册表一个值,如果该值存在我想修改它,如果它不存在我想去下一个类似的键检查。
键:
HKCU\SOFTWARE\MySoftware[=10=]1 HKCU\SOFTWARE\MySoftware[=10=]2 HKCU\SOFTWARE\MySoftware[=10=]3
每个键的值都相同,但我需要循环检查每个键,直到检查完所有键。
我目前正在做的是:
reg query "HKCU\SOFTWARE\MySoftware[=11=]1" /v MyValue
if %ERRORLEVEL%==0 (
reg add "HKCU\SOFTWARE\MySoftware[=11=]1" /v MyValue /f /t REG_DWORD /d 10
) else (
goto :KEY2
)
这将循环遍历我需要检查和修改的所有键,但它退出了几行,我在想也许我可以构建某种类型的子例程来完成此操作,但我有点难过。
for %%a in (001 002 003) do (
reg query "HKCU\SOFTWARE\MySoftware\%%a" /v MyValue
if not errorlevel 1 (
reg add "HKCU\SOFTWARE\MySoftware\%%a" /v MyValue /f /t REG_DWORD /d 10
)
)
应该可以做到这一点。 errorlevel
以其 运行 时间值的常规方式进行解释。您需要做的就是修改括号中的列表,其中的每个值依次分配给 metavariable
%%a
以下代码查询注册表项HKEY_CURRENT_USER\SOFTWARE\MySoftware
所有直接子项,过滤名称由三位小数组成的子项,按升序循环,查询值MyValue
对于每一个,如果找到,修改相应的数据:
for /F delims^=^ eol^= %%K in ('
reg query "HKEY_CURRENT_USER\SOFTWARE\MySoftware" /K /F * ^
^| findstr "^HKEY_.*\[0-9][0-9][0-9]$" ^| sort
') do (
reg query "%%K" /V "MyValue" && reg add "%%K" /V "MyValue" /f /t REG_DWORD /d 10
)
使用的 &&
操作符让后面的命令只有在前面的命令成功时才执行。