|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Остановка цикла во время ввода значения переменной с клавиатуры |
|
CMD/BAT - [решено] Остановка цикла во время ввода значения переменной с клавиатуры
|
Новый участник Сообщения: 2 |
Профиль | Сайт | Отправить PM | Цитировать
Добрый день,
хочу вот полностью отказаться от проводника и перейти на возможности cmd. Это позволит исключить значительное количество провисаний и увеличит производительность. Так вот, во время написания программы, направленной на запуск интересующих пользователя приложений. Суть программы в следующем: Пользователю высвечивается список доступных программ, после чего будет дана возможность ввести номер, под которым была показана программа. После программа обрабатывается ввод и происходит запуск необходимого приложения. Это мне удалось сделать. Так вот, после этого код кончается и программа закрывается. Я бы хотел так, чтобы этот список снова и снова высвечивался на экране. Удалось написать следующий код с использованием цикла FOR, но тогда сам цикл не даёт пользователю возможности для ввода, постоянно повторяет список программ. Сам по себе пишу давольно сложные программы, но вот такая, казалось бы простая программа, оказалось абсолютно не простой Setlocal EnableDelayedExpansion chcp 1251 set app= FOR /L %%b IN (-99999,1,999999) DO ( echo 1.CMD echo 2.Microsoft Office Word ... echo 33.Microsoft Edge echo 34.Google Chrome set /P app= if "!app!"=="1" (CMD.lnk) if "!app!"=="2" ("Microsoft Office Word.lnk") ... if "!app!"=="33" ("Microsoft Edge.lnk") if "!app!"=="34" ("Google Chrome.lnk") ) |
|
Отправлено: 08:20, 14-04-2019 |
Ветеран Сообщения: 2703
|
Профиль | Отправить PM | Цитировать Юрий.Кайдаулов@vk, Если хочется поизвращаться (или идти на поводу у плохообучаемого пользователя?) то
@Echo Off chcp 1251 :Begin cls set "app=" echo 1.CMD echo 2.Microsoft Office Word ... echo 33.Microsoft Edge echo 34.Google Chrome set /P "app=" if "%app%"=="1" (CMD.lnk) if "%app%"=="2" ("Microsoft Office Word.lnk") ... if "%app%"=="33" ("Microsoft Edge.lnk") if "%app%"=="34" ("Google Chrome.lnk") GoTo :Begin Pause Exit /B В 2 клика запустим всё что нужно. |
------- Последний раз редактировалось megaloman, 14-04-2019 в 14:27. Отправлено: 10:42, 14-04-2019 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Юрий.Кайдаулов@vk:
Цитата Юрий.Кайдаулов@vk:
:Repeat echo 1.CMD echo 2.Microsoft Office Word ... echo 33.Microsoft Edge echo 34.Google Chrome echo. echo 0. Exit set /P app= if "!app!"=="1" (CMD.lnk) if "!app!"=="2" ("Microsoft Office Word.lnk") ... if "!app!"=="33" ("Microsoft Edge.lnk") if "!app!"=="34" ("Google Chrome.lnk") if "!app!"=="0" exit /b 0 set /P app= goto :Repeat |
||
Отправлено: 10:49, 14-04-2019 | #3 |
Новый участник Сообщения: 2
|
Профиль | Сайт | Отправить PM | Цитировать Я вот на днях тоже нашёл решение своей же проблемы: слишком много echo. Там они выполняются не сразу, как, например, в языках типа C, или JS. Вот он и не успевал всё выводить, повторяя эти вывод постоянно лишь до 30. Вообщем узнал про команду more и всё стало как хотел. Идея всё же от megaloman оказалась всё же лучше и короче, отдельное за это спасибо
Setlocal EnableDelayedExpansion @ECHO OFF chcp 1251 set app= FOR /L %%b IN (-99999,1,999999) DO ( more list1.txt more list2.txt set /P app= if "!app!"=="1" (CMD.lnk) if "!app!"=="2" ("Microsoft Office Word.lnk") ... if "!app!"=="33" ("Microsoft Edge.lnk") if "!app!"=="34" ("Google Chrome.lnk") ) Цитата megaloman:
|
|
Отправлено: 15:10, 15-04-2019 | #4 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Юрий.Кайдаулов@vk:
|
||
Отправлено: 01:07, 16-04-2019 | #5 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Юрий.Кайдаулов@vk, а можете мне пояснить чем это удобно или зачем вообще?
Например зачем просто, без надобности запускать cmd.exe или Word.exe? Почему сразу не создавать что нужно или открывать в чем нужно или создавать и открыть одновременно что надо и в чем надо? Это ведь наоборот кусок работы чтобы еще предварительно запускать что-то, выискивать там какие-то пункты и т.д. Вот пример с созданием bat (сразу в открытом виде в AkelPad или в виде файла, закрытом виде) или открыть bat в чем нужно. Также и для других файлов создать https://drive.google.com/open?id=1Bs...-yvHLGSjzJkc8Y открыть https://drive.google.com/open?id=1nt...v3DId15fC2ThRb или добавить в меню пункт на открытие чего-либо (кроме ком. строки как у меня) https://drive.google.com/open?id=1bL...bc_aOPKzCKNcL5 хотя удобнее, а особенно если привык, работать в файловом менеджере, очень хороший пример - Цитата Iska:
|
|
Последний раз редактировалось alpap, 16-04-2019 в 14:57. Отправлено: 01:51, 16-04-2019 | #6 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Остановка цикла. Отправка почты через Blat | s.i.p.a | Скриптовые языки администрирования Windows | 3 | 12-04-2018 01:31 | |
Установка - Во время уcтановки windows 7 происходит остановка после "windows is loading files..." | Stasedj | Microsoft Windows 7 | 3 | 23-12-2013 14:40 | |
Интерфейс - Во время игры в любую игру или во время работы с программами все подвисает ! | Vlads986 | Microsoft Windows 7 | 1 | 22-10-2013 08:56 | |
собрать переменные из цикла в одну переменную while | binders | Вебмастеру | 7 | 16-09-2011 20:11 | |
Принтер - [решено] Samsung ML - 1210 остановка во время разогрева | sergey9841 | Прочее железо | 4 | 13-03-2009 16:58 |
|