Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Некорректная отработка оператора SET в теле IF

Ответить
Настройки темы
CMD/BAT - [решено] Некорректная отработка оператора SET в теле IF

Новый участник


Сообщения: 36
Благодарности: 0

Профиль | Отправить PM | Цитировать


Добрый день, в процессе адаптации ранее написанного скрипта столкнулся с проблемой: (не работает присвоение переменной в условном операторе).

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

Отправлено: 15:00, 10-12-2015

 

Ветеран


Сообщения: 1759
Благодарности: 966

Профиль | Цитировать


Код: Выделить весь код
setlocal /?
Код: Выделить весь код
@echo off
setlocal enabledelayedexpansion
set a=1
if %a% equ 1 (

     set /a a+=1 & echo !a! & echo %a%

)
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:15, 10-12-2015 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 122
Благодарности: 6

Профиль | Отправить PM | Цитировать


по поводу No Instance(s) Available
можно супер костыль добавить:

Код: Выделить весь код
for ... %%A in (... ) Do (
%%A | findstr /ivc:"No Instance"&&Set JAU=%%A
)
а вообще нужно читать ману по wmic /?
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:56, 10-12-2015 | #3


Ветеран


Сообщения: 1759
Благодарности: 966

Профиль | Цитировать


c4uran, Да можно просто перенаправить поток ошибок в nul (2>nul):
Код: Выделить весь код
@echo off
setlocal

set "wmic=wmic PRODUCT where Name="McAfee Agent" GET IdentifyingNumber /value"

for /f "tokens=*" %%i in ('"2>nul %wmic%"') do 1>nul set "%%i"

if defined IdentifyingNumber echo %IdentifyingNumber%
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:31, 10-12-2015 | #4



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Некорректная отработка оператора SET в теле IF

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Некорректная работа оператора сравнения "neq" Lucretius Скриптовые языки администрирования Windows 15 10-06-2013 23:55
Увольнение- отработка 12 дней. cher Флейм 20 19-12-2011 13:51
CMD/BAT - [решено] Использование If в теле цикла For ven00m Скриптовые языки администрирования Windows 3 11-01-2008 17:09
Отработка RunOnceEx на T-13 fox_sly Автоматическая установка Windows 2000/XP/2003 5 26-04-2006 11:36
Отработка php-кода в файле .html Guest Вебмастеру 4 08-04-2004 16:07




 
Переход