Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Помогите. несколько команд в одной строке cmd (http://forum.oszone.net/showthread.php?t=303796)

lopen 11-08-2015 10:20 2539894

Помогите. несколько команд в одной строке 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.
Можете дать рекомендацию по правильному исполнению команды?

Iska 11-08-2015 10:50 2539904

Цитата:

Цитата lopen
куда вставить /TIMEOUT 10 ? »

lopen, никуда. «set /p» ждёт бесконечно долго. Используйте «choice» с параметром «/t» вместо «set /p»:

Choice
Choice - Accept user input | Windows CMD | SS64.com
Batch files - The CHOICE command

lopen 11-08-2015 14:38 2540016

СПАСИБО!

lopen 17-08-2015 13:38 2542641

И снова здравствуйте.
Вот пример, того, что исполняю:
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 2542659

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


Iska 17-08-2015 15:09 2542696

Цитата:

Цитата lopen
Посоветуйте, как правильно тестировать выполнение команд? »

Закомментировав «echo off».

lopen 18-08-2015 17:30 2543160

спасибо, прочитал, перепробовал много разных вариантов. Никак не получается.

При следующей комбинации и выбрав один вариант, всё равно исполняются всё равно оба. Как заставить работать либо 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 2543180

lopen, Прочитайте еще раз внимательно:
Цитата:

Переменная среды ERRORLEVEL получает значение индекса
клавиши, соответствующей выбранному элементу. Первый элемент
в списке возвращает значение 1, второй - 2 и т.д.
У вас вместо значения errorlevel 2 стоит значение 3
Кроме того у вас после метки :E1 нет выхода из батника (exit /b или goto:eof), поэтому после этого блока выполнится код в метке :E3

lopen 19-08-2015 11:30 2543453

Спасибо, вы добрейший человек.
Про индекс не знал, про выход не обратил внимание.
Сейчамс всё работает, как часы)


Время: 00:17.

Время: 00:17.
© OSzone.net 2001-