![]() |
Некорректная отработка оператора SET в теле IF
Добрый день, в процессе адаптации ранее написанного скрипта столкнулся с проблемой: (не работает присвоение переменной в условном операторе).
Скрытый текст
For /F "tokens=2* delims==" %%A In ('wmic PRODUCT where Name^="McAfee Agent" GET IdentifyingNumber /value^|Findstr "="') Do (Set MA=%%A)
if not defined MA Set /a K=1 Echo %Key% For /F "tokens=2* delims==" %%A In ('wmic PRODUCT where Name^="Java Auto Updater" GET IdentifyingNumber /value^|Findstr "="') Do (Set JAU=%%A) if not defined JAU Set /a K=K+1 Echo %Key% но при внесения скрипта в тело условного оператора присвоение "K=1" не работает и счетчик начинает считать на следующем шаге, с чем это может быть связанно? Скрытый текст
Set /a Ins=1
if defined Ins ( For /F "tokens=2* delims==" %%A In ('wmic PRODUCT where Name^="Java Auto Updater" GET IdentifyingNumber /value^|Findstr "="') Do (Set JAU=%%A)) & if not defined JAU Set /a K=1 & Echo %K% & ( For /F "tokens=2* delims==" %%A In ('wmic PRODUCT where Name^="McAfee Agent" GET IdentifyingNumber /value^|Findstr "="') Do (Set MA=%%A)) & if not defined MA Set /a K=K+1 & Echo %K% pause но без IF счетчик нормально работает Скрытый текст
For /F "tokens=2* delims==" %%A In ('wmic PRODUCT where Name^="McAfee Agent" GET IdentifyingNumber /value^|Findstr "="') Do (Set MA=%%A)
if not defined MA Set /a Key=Key+1 Echo %Key% For /F "tokens=2* delims==" %%A In ('wmic PRODUCT where Name^="Java Auto Updater" GET IdentifyingNumber /value^|Findstr "="') Do (Set JAU=%%A) if not defined JAU Set /a Key=Key+1 Echo %Key% И второй вопрос, при корректной отработки For /F "tokens=2* delims==" %%A In ('wmic PRODUCT where Name^="McAfee Agent" GET IdentifyingNumber /value^|Findstr "="') Do (Set MA=%%A) записи в случае отсутствия условия выводится сообщение No Instance(s) Available. согласен, в этом случае замечание системы уместно, но как можно запретить вывод этого сообщения? |
Код:
setlocal /? Код:
@echo off |
по поводу No Instance(s) Available
можно супер костыль добавить: Код:
for ... %%A in (... ) Do ( |
c4uran, Да можно просто перенаправить поток ошибок в nul (2>nul):
Код:
@echo off |
Время: 06:19. |
Время: 06:19.
© OSzone.net 2001-