Batch File: If registry key's data is equal to

社会主义新天地 提交于 2019-12-18 17:37:14

问题


I'm trying to make a .bat toggler for certain Explorer settings. To do this I need the batch file to query the Registry key's data and then set the key accordingly. For example, in ActionScript 3 or JavaScript it would be something along the lines of this:

if (HideFileExt == "00000000"){
    HideFileExt = 00000001;
else {
    HideFileExt = 00000000;
}

This way, every time it runs it will set the key's data to be the opposite of what it currently is - a toggler.

I have Google-d this extensively and after quite a long time of chopping up and splicing multiple examples, I eventually got this:

REG QUERY HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced /v HideFileExt /t REG_DWORD /d 00000000

if errorlevel 1 (
    echo Num 1
) else (
    echo Num 2
)

rem The "echo Num"s are there just so that I could eventually figure out what the errorlevel does

which returns the error:

ERROR: Invalid syntax.
Type "REG QUERY /? for usage.
num 1

If I remove the /d 00000000 from the REG QUERY then it returns the accurate data value of the key without error. I have also tried it with /d 0, /d 0x0 and /d 0x00000000 and they didn't work either.


回答1:


The Answer from Dennis is correct, but I thought id paste the whole batch file so you can see it all working.

REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" | Find "0x0"
IF %ERRORLEVEL% == 1 goto turnoff
If %ERRORLEVEL% == 0 goto turnon

goto end
:turnon
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v 

HideFileExt /t REG_DWORD /f /D 1
goto end

:turnoff
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v 

HideFileExt /t REG_DWORD /f /D 0
goto end

:end
@exit



回答2:


The /d switch doesn't do what you think. It is a modifier to the /f switch, which is used to specify a search pattern. Unfortunately, /v already defines a search pattern, and they do not get along.

To check whether HideFileExt is set to 0, you can pipe reg's result to find:

reg query HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced /v HideFileExt | find "0x0"
if errorlevel 1 echo "HideFileExt is 0"
if errorlevel 0 echo "HideFileExt is not 0"


来源:https://stackoverflow.com/questions/9315289/batch-file-if-registry-keys-data-is-equal-to

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!