Вот задание:
Разработать пакетный файл для проверки дисков (каталогов) на вирусы. Диск выбирается из меню. Имя антивирусной программы - в командной строке (avp.exe).
Вот реализация:
@echo off
cls
IF -%1==-GOTO NoDir1
REM Вывод меню на экран
ECHO A - Диск C
ECHO B - Диск D
CHOISE /C:AB
CLS
KEM Определение сделанного вывода
IF ERRORLEVEL 2 GOTO DirToD
IF ERRORLEVEL 1 GOTO DirToC
ECHO Выбор не сделан
GOTO End
:DirToC
IF -%1==-GOTO NoDir2
Rem Вывод меня на экран
ECHO 1 - Avast
ECHO 2 - Drweb
CHOISE /C:12
CLS
KEM Определение сделанного выбора
IF ERRORLEVEL 2 GOTO DirToDrweb1
IF ERRORLEVEL 1 GOTO DirToAvast1
ECHO Выбор не сделан
GOTO End
:DirToD
IF -%1==-GOTO NoDir3
Rem Вывод меня на экран
ECHO 1 - Avast
ECHO 2 - Drweb
CHOISE /C:12
CLS
KEM Определение сделанного выбора
IF ERRORLEVEL 2 GOTO DirToDrweb2
IF ERRORLEVEL 1 GOTO DirToAvast2
ECHO Выбор не сделан
GOTO End
:DirToAvast1
"C:\ Program Files\Avast\avast.exe" a -r "%1" C:\
goto end
:DirToAvast2
"C:\ Program Files\Avast\avast.exe" a -r "%1" D:\
:DirToDrweb1
"C:\ Program Files\Drweb\drweb.exe" a -r "%1" C:\
goto end
:DirToDrweb2
"C:\ Program Files\Drweb\drweb.exe" a -r "%1" D:\
goto end
:NoDir1
ECHO He указан диск
GOTO End
:NoDir2
ECHO He указан антивирь для диска С
GOTO End
:NoDir3
ECHO He указан антивирь для диска D
PAUSE
:End
ВОПРОС: Что не правильно и как переделать. Пожалуйста, аргументировано. Файл делал по аналогии, еще нормально не разобрался, как что писать. Помогите, плз.
Другие языки программирования и технологии
Помогите с bat файлом!
и подпрограммой пользоваться опыта нет...
call :ask Disk_C Disk_D C D
if %answer%-==- call :no_answer "No disk"
set %disk=answer%
set answer=
call :ask Avast Dr.Web Avast\avast Drweb\drweb
if %answer%-==- call :no_answer "No AV"
set av=%answer%
"%programFiles/%av%" a -r %disk%:\
exit
:no_answer
ECHO %1
pause
exit
:ask
ECHO A - %1
ECHO B - %2
CHOISE /C:AB
IF ERRORLEVEL 2 set answer=%4
IF ERRORLEVEL 1 set answer=%3
exit /b
call :ask Disk_C Disk_D C D
if %answer%-==- call :no_answer "No disk"
set %disk=answer%
set answer=
call :ask Avast Dr.Web Avast\avast Drweb\drweb
if %answer%-==- call :no_answer "No AV"
set av=%answer%
"%programFiles/%av%" a -r %disk%:\
exit
:no_answer
ECHO %1
pause
exit
:ask
ECHO A - %1
ECHO B - %2
CHOISE /C:AB
IF ERRORLEVEL 2 set answer=%4
IF ERRORLEVEL 1 set answer=%3
exit /b
Офтальмология Туркестан Юко
Спасибо большое! Попытаюсь разобраться.
Моменты. Не choise а choice и более того такой команды нет в XP, Vista... но да есть в Windows 95 и Windows 10. н-р. Так что ИМХО лучше использовать set /p в данном случае
@echo off
cls
IF "%1"=="" (
:disk
set /p disk="Имя диска:"
) else set disk=%1
set disk=%disk:~0,1%:\
if not exist "%disk%" goto disk
:av
set /p av="Антивирус (1 - Avast; 2 - DrWeb):"
if %av%==1 "%Program Files%\Avast\avast.exe" a -r "%disk%"&exit
if %av%==2 "%Program Files%\Drweb\drweb.exe" a -r "%disk%"&exit
goto av
Логичнее не спрашивать A - диск C:, B - Диск D, а просто спросить имя диска у пользователя.
Если диск через командную строку не задан или такого нет в систем - он будет спрошен.
В принципе так-же можно сделать с антивирусом.
За правильность ключей у антивирусов - отвечаете сами =)
P.S: ИМХО логика немного не так построена. Надо бы определять сначала есть ли AVAST или DrWeb, а затем предлагать выбор. Диски на существование тоже хорошо-бы проверять.
Но по умолчанию - примерно Ваш аналог, но короче + фичи.
Строго говоря не рекомендуется на одной системе иметь 2 и более _активных_ антивируса.
@echo off
cls
IF "%1"=="" (
:disk
set /p disk="Имя диска:"
) else set disk=%1
set disk=%disk:~0,1%:\
if not exist "%disk%" goto disk
:av
set /p av="Антивирус (1 - Avast; 2 - DrWeb):"
if %av%==1 "%Program Files%\Avast\avast.exe" a -r "%disk%"&exit
if %av%==2 "%Program Files%\Drweb\drweb.exe" a -r "%disk%"&exit
goto av
Логичнее не спрашивать A - диск C:, B - Диск D, а просто спросить имя диска у пользователя.
Если диск через командную строку не задан или такого нет в систем - он будет спрошен.
В принципе так-же можно сделать с антивирусом.
За правильность ключей у антивирусов - отвечаете сами =)
P.S: ИМХО логика немного не так построена. Надо бы определять сначала есть ли AVAST или DrWeb, а затем предлагать выбор. Диски на существование тоже хорошо-бы проверять.
Но по умолчанию - примерно Ваш аналог, но короче + фичи.
Строго говоря не рекомендуется на одной системе иметь 2 и более _активных_ антивируса.
Офтальмология Туркестан Юко
Спасибо большое. Не могли бы вы подсказать ресурс, где можно больше узнать о том, как писать bat-ники. А то, походу, мой учебник прям сильно устарел и половину из того, что вы написали не могу найти.
Похожие вопросы
- Помогите с .bat файлом
- Помогите написать bat файлы, срочно надо, сам изучить уже не успеваю
- помогите написать bat-файл.
- помогите написать BAT файл
- Помогите написать какой-нибудь из bat-файлов
- Помогите сделать bat или автоматизировать замену файла. Цель в локальной сети нужно на всех станциях поправить файл host
- Как написать bat файл
- Нужен bat файл, чтобы переименовал все txt файлы в папке, заменяя имя на первую строку содержимого файла
- *.bat файл, проверка наличия нужного языка программирования и необходимых библиотек.
- bat-файл, как создать команду для запуска ярлыка