Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Не передается переменная во вложенный цикл (http://forum.oszone.net/showthread.php?t=313567)

8ash8 06-04-2016 16:15 2623679

Не передается переменная во вложенный цикл
 
Добрый день, в процессе написания скрипта по удалению всех версий Adobe Flash столкнулся с тем что переменная "Arg" при повторном прохождении цикла переменная не передается.
Подскажите почему и как быть?

Код:

setlocal EnableDelayedExpansion
For /F "Tokens=7 Delims==\" %%A IN ('Reg Query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" /F Flash') DO ((
        set Arg=%%A )&(
                For /F "Tokens=3 skip=2" %%B IN ('Reg Query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\!Arg!" /V UninstallString') DO (
                        call "%%B" -uninstall && Echo !Arg! >> "%X%Report\Record_antivirus\record_%COMPUTERNAME%.txt"
                                )))

Результат выполнения

Код:

C:\>For /F "Tokens=7 Delims==\" %A IN ('Reg Query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" /F Flash') DO ((set Arg=%A  )  & (For /F "Tokens=3 skip=2" %B IN ('Reg Qu
ery "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\!Arg!" /V UninstallString') DO (call "%B" -uninstall  && Echo !Arg!  1>>"C:\PKZI\Report\Record_antivirus\record_DACZC4181YC
5.txt" ) ) )

C:\>((set Arg=Adobe Flash Player ActiveX  )  & (For /F "Tokens=3 skip=2" %B IN ('Reg Query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\!Arg!" /V UninstallString') DO (c
all "%B" -uninstall  && Echo !Arg!  1>>"C:\Report\record_DACZC4181YC5.txt" ) ) )

C:\>(call "C:\Windows\system32\Macromed\Flash\FlashUtil32_21_0_0_197_ActiveX.exe" -uninstall  && Echo !Arg!  1>>"C:\Report\record_DACZC4181YC5.txt" )

C:\>((set Arg=Adobe Flash Player PPAPI  )  & (For /F "Tokens=3 skip=2" %B IN ('Reg Query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\!Arg!" /V UninstallString') DO (cal
l "%B" -uninstall  && Echo !Arg!  1>>"C:\Report\record_DACZC4181YC5.txt" ) ) )
Ошибка: Не удается найти указанный раздел или параметр в реестре.


alpap 07-04-2016 00:34 2623782

Попробуйте так:
Код:

@echo off
setlocal EnableDelayedExpansion
For /F "Tokens=7 Delims==\" %%A IN ('Reg Query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" /F Flash') DO (
 set Arg=%%A
 For /F "Tokens=3 skip=2" %%B IN ('Reg Query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\!Arg: =!" /V UninstallString') DO (
  call "%%B" -uninstall && Echo !Arg: =! >> "%X%Report\Record_antivirus\record_%COMPUTERNAME%.txt"
))
exit

.

8ash8 07-04-2016 13:38 2623938

Эффект тот же (((

alpap 08-04-2016 00:21 2624173

8ash8,
Код:

@echo off
for /f "tokens=7 delims=\" %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"^|find "Flash"') do (
 for /f "tokens=3" %%b in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\%%~a" /v "UninstallString"^|find "UninstallString"') do (
  call "%%~b" -uninstall && echo [%%a]-delete>>"%X%Report\Record_antivirus\record_%COMPUTERNAME%.txt"
))
exit /b

.


Время: 03:23.

Время: 03:23.
© OSzone.net 2001-