Привет сообщество stackoverflow,
Я пишу командный файл для автоматического обслуживания компьютера и включил несколько антивирусных приложений. По какой-то причине третье утверждение «если нет» никогда не достигается.
:AV
REM MSE
if not '%MSE%'=='' (
Echo Scanning for viruses using Microsoft Security Essentials.
Echo.
%MSE% -Scan -ScanType 1
Echo.
GOTO Defrag
)
REM AVG
if not '%AVG%'=='' (
Echo Scanning for viruses using AVG.
Echo.
%AVG% /COMP /QT /TRASH
Echo.
GOTO Defrag
)
REM NOD32
if not '%NOD32%'==''(
Echo Scanning for viruses using NOD32.
Echo.
if '%NOD32%'=='' GOTO NOD32NotFound
%NOD32% /aind /auto /log-file="%userprofile%\Desktop\Scan_Results.txt"
Echo.
GOTO Defrag
)
REM If all else fails...
GOTO AVNotFound
В настоящее время существует три блока кодов, по одному для каждой антивирусной программы. Каждый блок кода выполняется только тогда, когда переменная% AVG%% MSE% или% NOD32% не пуста, то есть они указывают на допустимый файл. Я назначаю переменные, используя код:
if exist "%programfiles(x86)%\AVG\AVG2012\avgscana.exe" set AVG="%programfiles(x86)%\AVG\AVG2012\avgscana.exe"
Все три блока кода работают отлично, с кодированием все в порядке. Проблема в том, что каким бы ни был третий блок, он никогда не выполняется. Таким образом, в текущем примере блоки кода располагаются в порядке MSE, AVG и NOD32. Блок кода NOD32 не выполняется, потому что это третий блок. И наоборот, если бы я вырезал и вставил блоки в другом порядке с блоком кода AVG, являющимся третьим блоком, он не будет выполнен.
Есть идеи?
Есть предложения?
Отредактировано для уточнения.