![]() |
Условие IF и скобки
Приветствую!
Помогите, пожалуйста, не могу понять чего не хватает. Нужно добавить в батнике по условию параметры в реестр. Как только вношу строки в условие, используя скобки, то перестаёт корректно отрабатывать. Так работает: Код:
REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce" /V "NETLangPack" /T "REG_SZ" /D "%PathRoot%\NDP46-KB3045557-x86-x64-AllOS-RUS.exe /q /norestart" /F Код:
ECHO. Код:
setlocal enableextensions enabledelayedexpansion Код:
IF /I %major-version% GEQ 10 ( Код:
IF /I %major-version% GEQ 10 reg ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AdvertisingInfo" /v Enabled /t REG_DWORD /d 0 /f |
Вы чего-то не договариваете, как мне кажется. Что именно «не работает»? И покажите полный код.
|
Раньше код был более примитивный, с кучей повторений, частенько при редактировании это сильно напрягало. Сейчас провёл небольшую оптимизацию, но не отрабатывает то, что приведено было выше. Весь код:
Код:
@echo off |
Дорогой друг! Должен Вам сказать — у Вас там чёрт голову сломит.
Определение: Код:
SET PathFile=VCredist\vc_redist.x64.exe && IF EXIST %PathRoot%\!PathFile! START /wait %PathRoot%\!PathFile! /q /norestart Код:
SET "PathFile=VCredist\vc_redist.x64.exe" Теперь давайте детально по коду: что именно у Вас в последнем коде не работает? Скажем так: «Не работает Раз — это …». Разберёмся с Раз, потом будет Два, Три и т.д. |
Цитата:
А не работает кусок кода с REG'ом, когда его заворачиваю в IF () в несколько строк, например, строка сама по себе работает Код:
REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce" /V "NETLangPack" /T "REG_SZ" /D "%PathRoot%\NDP46-KB3045557-x86-x64-AllOS-RUS.exe /q /norestart" /F Код:
IF /I %major-version% LEQ 6 ( Код прошу поругать, только конструктивно, желательно с примерами как можно и нужно иначе. Буду очень признателен. |
Уже точно не помню, но кажется !! к переменный добавлял именно в условиях, именно там без данного нюанса не раскрывались переменные правильно. Потому как внутри IF'а я ту же PathFile и переопределял каждый раз. Может быть Вы в силу своего опыта можете предложить более мудрую и универсальную конструкцию?
|
Emulty,
можно использовать вполне нейтральный вариант: Код:
IF /I %major-version% LEQ 6 CALL :METKA_6 Код:
SET "PathFile=dotNetFx4\NDP46-KB3045557-x86-x64-AllOS-ENU.exe" |
А вообще в твоем коде все пошло наперекосяк с первых строчек - можно обойтись без отложенного выполнения:
Код:
FOR /F "TOKENS=2,3 DELIMS=[." %%i IN ('ver') DO SET "version=%%i"&SET "minor_version=%%j" |
Большое спасибо всем за помощь! В принципе со всем разобрался, сейчас всё работает.
Низкий поклон. |
Время: 11:38. |
Время: 11:38.
© OSzone.net 2001-