2015-05-14 3 views
0

Я пытаюсь создать пакетный файл, который упрощает процесс установки нескольких драйверов. Он проходит через каждый драйвер один за другим, поэтому все, что нужно сделать пользователю, - это щелкнуть «дальше» непрерывно по всему процессу, а не следить за тем, какие драйверы установлены. Вот мой код: имена драйверов находятся в текстовом файле, и он использует цикл for, чтобы пройти через них.Пакетный файл, который делает установки драйверов быстрее

Проблема в том, что первый драйвер работает нормально, но часть кода, которая сообщает пользователю, какой драйвер был установлен и общая установленная сумма, а также спросить пользователя, хотят ли они продолжить, не работает , После того, как первый драйвер закончит, остальные просто откроются одновременно и не идут один за другим, как предполагалось. Кажется, что/wait код больше не работает.

@echo off 

:INTRO 
ECHO Welcome to the Driver Installation Agent. 
ECHO. 
ECHO. 

:GETINPUT 
ECHO Enter 1 - Start installing 
ECHO. 
ECHO Enter 2 - Exit 
ECHO. 
set INPUT= 
set /P INPUT=Enter the option: %=% 
IF "%INPUT%" == "1" GOTO INSTALLAGENT 
IF "%INPUT%" == "2" GOTO :EOF 
GOTO INVALID 

:INSTALLAGENT 
set /a B=0 
for /F "tokens=*" %%A in (driverList.txt) do START %%A 
GOTO FINISH 


:START 
start /s /wait %%A /NORESTART EULA_ACCEPT=YES 
set /a B+=1 
ECHO The driver %A% has just been installed, %B% drivers have been installed  in total. 
ECHO Enter 2 to exit, otherwise press enter to continue. 
set INPUT2= 
set /P INPUT2=Enter the option: %=% 
IF "%INPUT2%" == "2" GOTO :EOF 

:FINISH 
ECHO 
ECHO All Updates Performed. Press key to exit. 
ECHO 
PAUSE 
cls 

:INVALID 
ECHO Invalid option 
ECHO. 
GOTO GETINPUT 

Я знаю, что это не может быть наиболее эффективным способом для установки драйверов, но это было мне пристанет, и я думаю, что это хороший способ познакомиться с кодированием в ЦМД. Любая помощь будет полезна!

+0

Что делать, если вы измените порядок водителей в списке и есть, поставить тот, который вы в настоящее время есть в последний раз? Возникает ли та же проблема? Может быть, сами программы установщика драйверов не ведут себя так, как вы ожидаете. –

+0

Я изменил порядок, и то же самое все еще происходит. Первый драйвер работает отлично, затем остальные начинают одновременно с момента начала второго. –

ответ

0

Следующий фрагмент кода может помочь:

:INSTALLAGENT 
set /a B=0 
for /F "tokens=*" %%A in (driverList.txt) do (
    set "_driver=%%~A" 
    CALL :START 
) 
GOTO :FINISH 

:START 
start /s /wait %_driver% /NORESTART EULA_ACCEPT=YES 
set /a B+=1 
ECHO The driver %_driver% has just been installed, %B% drivers have been installed in total. 
set "INPUT2=" 
set /P "INPUT2=Enter 2 to exit, otherwise press enter to continue: " 
IF "%INPUT2%"=="2" goto :incomplete 
GOTO :EOF 

:INVALID 
ECHO Invalid option 
ECHO. 
GOTO :GETINPUT 

:FINISH 
ECHO(
ECHO All Updates Performed. Press key to exit. 
ECHO(
:incomplete 
PAUSE 
cls 

Ресурсы (обязательное чтение):

Смежные вопросы