Windows 增量<;ValueName>;从批处理文件使用reg add时
我有一组电脑需要添加注册表项 我当前使用一个批处理文件,其中包含以下行以在windows中添加注册表项:Windows 增量<;ValueName>;从批处理文件使用reg add时,windows,batch-file,cmd,registry,Windows,Batch File,Cmd,Registry,我有一组电脑需要添加注册表项 我当前使用一个批处理文件,其中包含以下行以在windows中添加注册表项: reg添加“HKLM\SOFTWARE\Policies\Google\Chrome\Test”/v1/t reg\u SZ/d Test/f 注意/v1 稍后,我需要在此键下添加一个新值。有些机器已经有了第一个值,因此我想用/v2添加新的值,但是如果机器还没有任何值,我想将新的值添加为/v1 我要做的是获取此键下的最后一个值,将ValueName参数作为int,将其递增,并将结果用作我添加
reg添加“HKLM\SOFTWARE\Policies\Google\Chrome\Test”/v1/t reg\u SZ/d Test/f
注意/v1
稍后,我需要在此键下添加一个新值。有些机器已经有了第一个值,因此我想用/v2
添加新的值,但是如果机器还没有任何值,我想将新的值添加为/v1
我要做的是获取此键下的最后一个值,将ValueName
参数作为int,将其递增,并将结果用作我添加的键的ValueName
。如果还没有值,ValueName
应默认为1
如何在批处理文件中执行此操作?您可以尝试以下操作:
@echo off
Set "Key=HKLM\SOFTWARE\Policies\Google\Chrome\Test"
reg query "%key%" >Nul 2>&1
If "%errorlevel%" EQU "1" ( goto NoExist ) else ( goto Exist )
:Exist
Color 0A
echo "%key%" Exist
reg add "%key%" /v 2 /t REG_SZ /d Test /f
pause
exit /b
:NoExist
Color 0C
echo "%key%" dosen't Exist
pause
goto CreateKey
:CreateKey
cls
Color 0B
reg add "%key%" /v 1 /t REG_SZ /d Test /f>nul 2>&1
If "%errorlevel%" EQU "0" ( echo The Key is added succesfuly into the registry !
) else (
color 0C & echo There was an error !
)
pause
Exit
您可以尝试类似的方法:
@echo off
Set "Key=HKLM\SOFTWARE\Policies\Google\Chrome\Test"
reg query "%key%" >Nul 2>&1
If "%errorlevel%" EQU "1" ( goto NoExist ) else ( goto Exist )
:Exist
Color 0A
echo "%key%" Exist
reg add "%key%" /v 2 /t REG_SZ /d Test /f
pause
exit /b
:NoExist
Color 0C
echo "%key%" dosen't Exist
pause
goto CreateKey
:CreateKey
cls
Color 0B
reg add "%key%" /v 1 /t REG_SZ /d Test /f>nul 2>&1
If "%errorlevel%" EQU "0" ( echo The Key is added succesfuly into the registry !
) else (
color 0C & echo There was an error !
)
pause
Exit
在CMD和.bat文件中执行命令之间的语法差异使得这一点很难解决,但这是最终解决的问题:
setlocal enabledelayedexpansion enableextensions
SET /a ValueName=0
SET Query=REG QUERY HKLM\SOFTWARE\Policies\Google\Chrome\Test
SET Key=HKLM\SOFTWARE\Policies\Google\Chrome\Test
FOR /f "tokens=1,2,3" %%a in (%Query%) do (
IF %%a GTR !ValueName! (
SET /a ValueName=%%a+1
)
)
endlocal
REG ADD %Key% /v %ValueName% /t REG_SZ /d Test2
PAUSE
在CMD和.bat文件中执行命令之间的语法差异使得这一点很难解决,但这是最终解决的问题:
setlocal enabledelayedexpansion enableextensions
SET /a ValueName=0
SET Query=REG QUERY HKLM\SOFTWARE\Policies\Google\Chrome\Test
SET Key=HKLM\SOFTWARE\Policies\Google\Chrome\Test
FOR /f "tokens=1,2,3" %%a in (%Query%) do (
IF %%a GTR !ValueName! (
SET /a ValueName=%%a+1
)
)
endlocal
REG ADD %Key% /v %ValueName% /t REG_SZ /d Test2
PAUSE
执行
reg query
首先查找/v1
如果失败,则添加/v1
如果成功,则添加/v2
执行reg query
首先查找/v1
如果失败,则添加/v1
如果成功,则添加/v2
,感谢您的帮助。不幸的是,在野外,这些键可能已经有任意数量的项,所以我真的需要增加找到的最高值。不过我还是算出了:)再次感谢!谢谢你的帮助。不幸的是,在野外,这些键可能已经有任意数量的项,所以我真的需要增加找到的最高值。不过我还是算出了:)再次感谢!