8ash8
29-03-2016, 19:12
Добрый день, в процессе написания скрипта для удаления ПО столкнулся с такой проблемой: при передачи данных из цикла 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. Как это исправить (обойти).
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. Как это исправить (обойти).