Показать полную графическую версию : [решено] Помогите. несколько команд в одной строке cmd
не выполняется задача set selection=1
нужно запустить к исполнению вторую строку, если по истечению 10 секунд от пользователя не поступило никаких действий. Где я напутал и куда вставить /TIMEOUT 10 ?
SET /P selection="select the installation (1=script1, 2= script2.bat):" || set selection=1 /TIMEOUT 10
IF %selection%==1 start /wait cmd /c "C:\Windows\Software\Common\script1.bat"
IF %selection%==2 start /wait cmd /c "C:\Windows\Software\Common\script2.bat"
Данная комбинация содержится в .BAT и запускается из командной строки Windows.
Можете дать рекомендацию по правильному исполнению команды?
куда вставить /TIMEOUT 10 ? »
lopen, никуда. «set /p» ждёт бесконечно долго. Используйте «choice» с параметром «/t» вместо «set /p»:
Choice (https://technet.microsoft.com/en-us/library/cc732504.aspx)
Choice - Accept user input | Windows CMD | SS64.com (http://ss64.com/nt/choice.html)
Batch files - The CHOICE command (http://www.robvanderwoude.com/choice.php)
И снова здравствуйте.
Вот пример, того, что исполняю:
CHOICE /C:135 /T 900 /D 1
IF ERRORLEVEL 1 GOTO E1
IF ERRORLEVEL 3 GOTO E3
IF ERRORLEVEL 5 GOTO E5
При любом выборе выполняется значение по умолчанию, т.е. "1". Или CHOICE понимает только YNC? Но и при YNC выполняется только вариант №1. Где ошибка?
Посоветуйте, как правильно тестировать выполнение команд? Существует оболочка для теста .batch файлов?
Foreigner
17-08-2015, 14:02
lopen, А если прочитать справку?
@echo off
setlocal
choice /c:135 /t 900 /n /m:"Make your choice: 1,3,5 > " /d 1
if %errorlevel% equ 1 echo 1
if %errorlevel% equ 2 echo 3
if %errorlevel% equ 3 echo 5
Посоветуйте, как правильно тестировать выполнение команд? »
Закомментировав «echo off».
спасибо, прочитал, перепробовал много разных вариантов. Никак не получается.
При следующей комбинации и выбрав один вариант, всё равно исполняются всё равно оба. Как заставить работать либо setupE1.exe, либо setupE3.exe?
Совсем голову сломал.
@echo off
setlocal
choice /c:13 /t 900 /n /m:"Make your choice: 1,3 > " /d 1
if %errorlevel% equ 1 GOTO E1
if %errorlevel% equ 3 echo E3
ELSE GOTO EXIT
:E1
start /wait cmd /c C:\setupE1.exe
:E3
start /wait cmd /c C:\setupE3.exe
:EXIT
EXIT
Foreigner
18-08-2015, 18:17
lopen, Прочитайте еще раз внимательно:
Переменная среды ERRORLEVEL получает значение индекса
клавиши, соответствующей выбранному элементу. Первый элемент
в списке возвращает значение 1, второй - 2 и т.д.
У вас вместо значения errorlevel 2 стоит значение 3
Кроме того у вас после метки :E1 нет выхода из батника (exit /b или goto:eof), поэтому после этого блока выполнится код в метке :E3
Спасибо, вы добрейший человек.
Про индекс не знал, про выход не обратил внимание.
Сейчамс всё работает, как часы)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.