2016-12-16 4 views
0

Я пытаюсь сделать reg-запрос переменной. Я могу заставить его работать в win10, но когда я пробую XP, он не работает. Его запрос reg для определения .net4 установлен.специальные символы в переменной помощи

set "net4=REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP" | find /i "4.0" > NUL || ".NetFx40.exe" /passive /norestart" 

для проверки на выигрыше 10, если я сменил 4.0 на 5.0, начнется установка, оставьте на 4, он пропустит, как ожидалось.

На XP, как только он попадает в элемент переменной настройки, он просто пытается установить , независимо от того, что он уже установлен. Я догадываюсь о том, что трубы, и все нарушает вход, как я могу это решить, спасибо.

+1

Я не знаю, если это является источником проблемы вы описываете, но ваши кавычки ('" ') может вызвать некоторые проблемы Помните, что ** один '' 'будет закрыт первым следующим' '' **. Я бы посоветовал вам просто удалить первый '' 'и самый последний' '', а затем вывести каждый '' 'с помощью '^' Итак, вы можете начать с замены вашего кода на «set net4 = REG QUERY» HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ NET Framework Setup \ NDP "^ | find/i" 4.0 "> NUL^|^|" .NetFx40. exe "/ passive/norestart' –

+1

' '' также должен быть экранирован с '^'! моими извинениями, я забыл упомянуть об этом в своем предыдущем комм ent –

+0

Да! Спасибо, отлично работает, у меня действительно есть шанс убежать так, но занятые цитаты, как вы заметили, вызывают проблему. интересно, почему выигрыш 10 не нуждается в побегах. здесь приведен фрагмент рабочего кода ** set net4 = REG QUERY "HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ NET Framework Setup \ NDP"^| найти/i "5.0" ^> NUL^|^| «NetFx40.exe»/passive/norestart ** – Tika9o9

ответ

0

Это рабочая линия, как было предложено J.Baoby:

set net4=REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP" ^| find /i "4.0" ^> NUL ^|^| ".NetFx40.exe" /passive /norestart