Что мне не хватает?
Я пытаюсь получить значение двоичного ключа из UserPreferencesMask
, двоичное значение равно 9032078010000000
(или hex:90,32,07,80,10,00,00,00
в regedit
).
Результат %%A
печатает 9032078010000000
, но когда я использую этот результат в / с if %% NEQ
или EQU
, я всегда goto:HEX_okay
.
for /f "skip=2 tokens=3 delims= " %%A in ('reg query "HKCU\Control Panel\Desktop" /f UserPreferencesMask /d /T REG_BINARY') do (
echo.RESULT="%%A"
REM if %%a NEQ 9032078010000000 goto FiX
if %%A EQU 9032038010000000 goto HEX_okay
goto:FiX
)
Я использую skip=2
, потому чтоЯ не использую первые 2
строки и delims= "
, чтобы перейти к токену 3rd
, вроде как ...
edit:
UserPreferencesMask должно быть 9032078010000000
(двоичное значение), если нет, измените его на это конкретное двоичное значение (используйте reg add).
т.е.. REG.exe ADD "HKCU\Control Panel\Desktop" /V "UserPreferencesMask" /T REG_BINARY /D "9032078010000000" /F
Я также пытался:
for /f "tokens=3" %%i in ('reg query "HKCU\Control Panel\Desktop" /v UserPreferencesMask /t REG_BINARY') do (
echo.RESULT="%%i"
IF NOT %%i equ 9032038010000000 goto FiX
IF %%i equ 9032038010000000 goto HEX_okay
goto:DO_NOTING
)
... Но с тем же результатом и изменение equ
в ==
тоже не помогает.
когда я изменяю значение для UserPreferencesMask в regedit и помещаю aa (или что-либо еще), я получаю некоторый результат;goto FiX
.НО, когда я просто добавляю несколько чисел (в regedit), я всегда goto HEX_okay
, поэтому раздражает: '(
Эти следующие изменения (ниже) тоже не помогают, тогда это всегда, goto FIX
:
IF NOT "%%i"=="9032038010000000" goto FiX
IF "%%i"=="9032038010000000" goto HEX_okay
Эти следующие строки действительно работают, WELL SORT OFF:
, когда я изменяю двоичное значение «UserPreferencesMask» как много, чем просто 1или 2 цифры, тогда кажется, что он работает как ожидалось ... Странно и не совсем "обезьяна доказательство", это не всегда работает, как ожидалось.
for /f "skip=2 tokens=3 delims= " %%i in ('reg query "HKCU\Control Panel\Desktop" /F "UserPreferencesMask" /D /C /E /T REG_BINARY') do (
echo.RESULT="%%i"
IF NOT %%i equ 9032038010000000 goto FiX
IF %%i equ 9032038010000000 goto HEX_okay
goto:NO_UserPreferencesMask
)
PS. Я могуиспользуйте for /f "tokens=3"
для того же результата, хотя
Этот обходной путь , похоже, работает, хотя:
reg query "HKCU\Control Panel\Desktop" /F "UserPreferencesMask" /D /C /E /T REG_BINARY | find /i "9032078010000000"
if errorlevel 1 goto FiX
if errorlevel 0 goto HEX_okay