Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

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

Ответить
Настройки темы
CMD/BAT - [решено] При передачи данных из цикла For в подпрограмму происходит 2х кратный вызов последней

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


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

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


Добрый день, в процессе написания скрипта для удаления ПО столкнулся с такой проблемой: при передачи данных из цикла For в подпрограмму происходит 2х кратный вызов последней и как следствие остается 2 записи в логах.

Код: Выделить весь код
cls
set X=%~dp0
For /F "tokens=2 delims==" %%A In ('WMIC  PRODUCT Where "Name LIKE 'Adobe%% Reader%%'" GET Name^, IdentifyingNumber /value^|Findstr "="') Do (set Arg=%%A & Call :De1 Arg)
:De1
if %Arg:~0,1% neq { (echo %Arg% >> "%X%Insid.txt")  else (
		START /WAIT MsiExec.exe /X%Arg% /qn /norestart)
Exit /B
в логе пишет:
Код: Выделить весь код
Adobe Acrobat Reader DC - Russian  
Adobe Acrobat Reader DC - Russian
Отсюда 2 вопроса:
1. Почему так происходит.
2. Как это исправить (обойти).

Отправлено: 19:12, 29-03-2016

 

Ветеран


Contributor


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

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


Перед :De1 вставить строку GoTo :Eof либо Exit, если надо, с ключом.
(1) Инструкции обрабатываются последовательно.
:De1 это метка
сначала в for вы вызываете кусок кода по метке :De1 как процедуру. После выполнения For переходим к выполнению следующей инструкции. Метка она и в Африке метка и никак не влияет на выполнение программы, если на неё не ссылаться.
Поэтому при окончании кода головной части батника отделите её от процедуры GoTo :Eof либо Exit
И вообще, каждую процедуру, если их несколько, надо отделять от последующей, GoTo :Eof либо Exit, так как см. (1)
Полезно еще прочитать хелп (в командной строке Call /?)

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 29-03-2016 в 20:33.

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

Отправлено: 20:00, 29-03-2016 | #2



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

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


Ветеран


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

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


Для надёжного разбора вывода команды "WMIC" лучше использовать такой код:

Код: Выделить весь код
@echo off

for /f "tokens=1,2 delims==" %%A in ('
 wmic product where "Name like 'Adobe%% Reader%%'" get Name^, IdentifyingNumber /value
') do (
 for /f "delims=" %%C in ("%%B") do (
  if /i "%%A" neq "IdentifyingNumber" (
   echo %%C>>"%~dp0Insid.txt"
  ) else (
   start /wait MsiExec.exe /x%%C /qn /norestart
  )
 )
)

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

Отправлено: 20:56, 29-03-2016 | #3



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] При копировании не происходит преобразовании из переменной в путь назначения 8ash8 Скриптовые языки администрирования Windows 2 21-03-2016 15:36
Вопрос - [решено] Вопрос по сетевой безопасности при передачи данных в сети Интернет. AtosPolon Защита компьютерных систем 6 24-11-2014 20:16
VBS/WSH/JS - Экспорт данных их Excel в Sql Server без цикла. VBS LilLoco Программирование и базы данных 2 19-11-2012 12:55
VBS/WSH/JS - [решено] Проблема передачи параметров в скрипт при запуске из ярлыка gora Скриптовые языки администрирования Windows 1 08-09-2011 13:26
Скорость передачи данных в интернет при XP-SP2 rik_ Microsoft Windows 2000/XP 13 27-11-2006 19:54




 
Переход