PDA

Показать полную графическую версию : Не передается переменная во вложенный цикл


8ash8
06-04-2016, 16:15
Добрый день, в процессе написания скрипта по удалению всех версий 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
Попробуйте так:

@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
Эффект тот же (((

alpap
08-04-2016, 00:21
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
.




© OSzone.net 2001-2012