2013-11-17 4 views
0

У меня есть два командных файла в том же каталоге, который я хочу запустить. Но я не хочу просто начинать оба. Я хочу открыть пакетный файл, попросить l или f, и если я скажу l, он откроет пакетный файл ex1.bat, и если я скажу 2 open ex2.batПакетный файл, который открывает один из двух пакетных файлов

ответ

0

Вы не сказали, какую версию Windows вы используете используя, поэтому я предполагаю, что у вас есть либо Win7, либо Win8.

@echo off 
setlocal 

:loop 
set /p "Input=Enter l, f or simply [ENTER] to exit :<space>" 

if "%Input%" equ "" exit /b 
if /i "%Input%" equ "l" (
    call ex1.bat 
    exit /b 
) 
if /i "%Input%" equ "f" (
    call ex2.bat 
    exit /b 
) 
goto loop 

Обратите внимание на < пространство> в коде, приведенном выше. На самом деле это символ пробела, а не строка «< space>».

(Update:. Я изменил if {%Input%} линии с помощью фигурных скобок с помощью двойных кавычек, как if "%Input%", который более устойчив к ошибочному вводимому пользователю, так как foxidrive правильно указал)

+0

«set/p» Input = Введите l, f или просто [ENTER], чтобы выйти: «' <- это будет работать (с двойными кавычками), а также защищает входные данные от ядовитых символов и пробелов.Аналогично, ваши '{}' должны быть двойными кавычками для обеспечения одинаковой защиты. – foxidrive

+0

@foxidrive двойные кавычки в операторах if в нашем примере безвредны, но это плохая идея сделать это generallu. Если вы проверите вход или env. переменная, которая уже содержит двойные кавычки и пробелы (например, имена файлов), тогда if с двойными кавычками будет расти вверх ... – elgonzo

+0

@foxidrive, что вы имеете в виду с символами яда? Амперсанд, кавычки и т. Д.?? Кавычки в команде 'set/p' не действуют (они также не вредны). Или я что-то пропустил? – elgonzo

1

Если вы новичок в пакетные файлы то этот вариант может быть проще понять.

@ECHO OFF 

:start 
CLS 
ECHO l = Launch ex1.bat 
ECHO f = Launch ex2.bat 
SET /p option=Enter Selection: 
IF "%option%"=="l" start ex1.bat 
IF "%option%"=="f" start ex2.bat 
GOTO start 

Это предполагает, что у вас есть ex1.bat и ex2.bat в том же каталоге, что и данный пакетный-файл.

Эта партия откроет ex1.bat или ex2.bat в новом окне, но сама останется открытой. Вы можете изменить его, чтобы «закрыть» после выбора, удалив слово «старт», как так ...

IF "%option%"=="l" ex1.bat 
IF "%option%"=="f" ex2.bat 

.

Объяснение:

@ECHO OFF 

Это выключает отображение команд и будет отображаться только на экране выходы

:start 

Устанавливает мейкера, что пакетный файл может вернуться.

CLS 

Очищает окно любого предыдущего текста, прежде чем продолжить

ECHO l = Launch ex1.bat 
ECHO f = Launch ex2.bat 

ECHO является команда, которая говорит ему, чтобы отобразить на экране следующий текст.

SET /p option=Enter Selection: 

Создает переменную с именем «вариант», но просит вас, что хранить в нем, отображая сообщение «Enter Selection:»

IF "%option%"=="l" start ex1.bat 
IF "%option%"=="f" start ex2.bat 

Проверяет, что вводился в командной строке для опции «» переменная ... если она была «l», тогда она запустит файл ex1.bat. Если бы это было «е», то он будет работать файл с именем ex2.bat

GOTO start 

Сообщает, что вернуться к маркеру под названием «старт» и запустить снова с этой точки.

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