Пакетный файл: если данные ключа реестра равны - PullRequest
3 голосов
/ 16 февраля 2012

Я пытаюсь сделать .bat toggler для определенных настроек проводника. Для этого мне нужен командный файл, чтобы запросить данные ключа реестра, а затем установить соответствующий ключ. Например, в ActionScript 3 или JavaScript это будет что-то вроде этого:

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

Таким образом, каждый раз, когда он запускается, он устанавливает данные ключа в противоположность тому, что он в настоящее время - переключатель.

У меня есть Google-d, и после довольно длительного разбора и объединения нескольких примеров я в итоге получил:

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

, который возвращает ошибку:

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

Если я удаляю /d 00000000 из REG QUERY, он возвращает точное значение данных ключа без ошибок. Я также попробовал это с /d 0, /d 0x0 и /d 0x00000000, и они тоже не работали.

Ответы [ 2 ]

7 голосов
/ 16 февраля 2012

Переключатель /d не делает то, что вы думаете. Это модификатор переключателя /f, который используется для указания шаблона поиска. К сожалению, /v уже определяет шаблон поиска, и они не ладят.

Чтобы проверить, установлено ли HideFileExt на 0, вы можете направить результат reg в 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"
3 голосов
/ 17 февраля 2012

Ответ от Денниса правильный, но я думал, что id вставит весь пакетный файл, чтобы вы могли видеть, как все работает.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...