запуск программ из командного файла, command.com |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
запуск программ из командного файла, command.com |
*оля* |
20.03.2012 17:50
Сообщение
#1
|
Пионер Группа: Пользователи Сообщений: 125 Пол: Женский Репутация: 1 |
Здравствуйте.
Нужно в зависимости от выбранного пункта меню запустить то или иное приложение. Однако при запуске сразу открывается первое приложение и больше ничего не делается. в чем ошибка? Код echo off goto choice :choice cls echo 1) WINMINE echo 2) SOLITER echo 3) PAINT echo 4) QUIT PROGRAMM choice /c:1234 CLICK ON ONE KEY FROM LIST if errorlevel 4 goto question if errorlevel 3 goto paint if errorlevel 2 goto sol if errorlevel 1 goto winmine :winmine c:\windows\system32\winmine.exe goto choice :sol C:\WINDOWS\system32\sol.exe goto choice :paint C:\WINDOWS\system32\mspaint.exe goto choice :question cls echo QUIT?? choice /c:yn if errorlevel 2 goto choice if errorlevel 1 goto quit :quit exit заранее спасибо. Сообщение отредактировано: *оля* - 20.03.2012 17:50 |
IUnknown |
20.03.2012 18:08
Сообщение
#2
|
a.k.a. volvo877 Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: 627 |
Ты под какой Windows это тестируешь? CHOICE уже под XP отсутствует. Вместо него используется set /p
|
Lapp |
21.03.2012 5:44
Сообщение
#3
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Володь, ты что-то путаешь.. SET действительно можно использовать для этих целей (начиная с Win2K), но CHOICE таки никто не отменял.
Оля, а ты вообще смотрела синтаксис команды choice? Извини, я немного удивлен, что у тебя такие ляпы - ты уж вроде съела пару шавок в программинге.. )) Во-первых, отсутствует ключ мессаджа, во-вторых мессадж должен быть в кавычках, если он содержит пробелы: choice /c:1234 /m "CLICK ON ONE KEY FROM LIST" Далее, если ты не хочешь остаться в вызываемой проге до завершения ее работы, то конечно же надо использовать start. Короче, вот как-то так: echo off Я тут убрал пути к прогам - нельзя же так наивно, c:\windows - используй переменные окружения, %WinDir% и т.д., или уж полагайся на PATH (как сделал я). Еще один совет - не надо называть метки именами команд, себя же запутываешь. Сделай program_choice, run_winmine - например.. P.S. Да, и добавь еще пару проверок на выход - они, что - сдурели? выходить из такой замечательной программы?!?!?!?!?! А в строке "echo QUIT??" не хватает одиннадцати вопросительных знаков и тринадцати восклицательных (английский давно повторяла?)). Этих трататаханных юзеров надо постоянно по башке лупить, они это страсть как любють и жить без того не можуть.. P.P.S. В качестве отладчика - включай эхо на отдельных участках (а для начала ВООБЩЕ не выключай его нигде). -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
IUnknown |
21.03.2012 10:46
Сообщение
#4
|
a.k.a. volvo877 Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: 627 |
Володь, ты что-то путаешь.. SET действительно можно использовать для этих целей (начиная с Win2K), но CHOICE таки никто не отменял. У меня на машине с XP вызов CHOICE не отработал, в списке Command-line reference A-Z его тоже нет. Отработало вот так:Код echo off :choice cls echo 1) WINMINE echo 2) SOLITER echo 3) PAINT echo 4) QUIT PROGRAMM set /p a="CLICK ON ONE KEY FROM LIST " if "%a%" == "4" goto question if "%a%" == "3" goto paint if "%a%" == "2" goto sol if "%a%" == "1" goto winmine :winmine start /wait winmine.exe goto choice :sol start /wait sol.exe goto choice :paint start /wait mspaint.exe goto choice :question cls set /p a="Quit?" if "%a%" == "n" goto choice :quit (выходить EXIT-ом по метке quit не стал для целей отладки, start /wait - чтобы дожидаться завершения одной программы, и только потом запускать другую, а не мешать все в одну кучу) |
Текстовая версия | 13.06.2024 8:44 |