|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Крашится Bat после Else. Пытаюсь сделать переключатель параметра. |
|
|
CMD/BAT - [решено] Крашится Bat после Else. Пытаюсь сделать переключатель параметра.
|
Новый участник Сообщения: 6 |
Если сугубо банально, то оно работает в упрощенном виде. И работает идеально.
set x=900 set w= :1 cls echo bla-bla-bla u select to: %x% echo %w% echo ============ choice /c 12 /n if %ErrorLevel%==1 (if %x%==0 (set x=1 & set w=666 & goto 1) else set x=0 & set w=555 & goto 1) if %ErrorLevel%==2 (if %x%==2 (set x=3 & goto 1) else set x=2 & goto 1) goto 1 Проблемная строка: Смысл сего - переключение 2х параметров одной(двух) переменной в меню кликом 1й кнопы. |
|
Отправлено: 14:06, 18-01-2019 |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать Сильно критично чтобы все это было ванлайном? этж убицца такое читать.
Так оно приблизительно выглядит или где-то я напутал? Это значит "раз". Теперь "два": как именно 'оно крашится'? |
Отправлено: 16:10, 18-01-2019 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать хотя бы так, там доработаете, а то не очень понятно из-за сумбурности
|
Последний раз редактировалось alpap, 18-01-2019 в 17:53. Причина: (иначе переопределение переменных - убрал) Отправлено: 16:40, 18-01-2019 | #3 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Цитата Elven:
Цитата Elven:
До следующего упрощенного примера я допёр, когда разбирался в проблеме. Здесь все работает как надо, но вот там, где необходимо - не работает. мх. утром я делал тоже самое, и когда x менялся с числа на слово, были краши. set x=900 :1 cls & echo %x% echo ======= choice /c 12 /n if %ErrorLevel%==1 (if %x%==0 (set x=1 & goto 1) else (set x=0 & goto 1)) if %ErrorLevel%==2 (if %x%==акула (set x=спит & goto 1) else (set x=акула & goto 1)) Но он удаляет(т.е. заменяет) из строки. Он не может добавить между двух слов(по сути в пустое место посреди строки) предложение (либо мне не хватает знаний) т.к. что-то в строке меняется при вводе, что-то нужно добавить. Это для меня пока сложно и не в приоритете. Возможно есть другой подход. Но это уже другая тема. |
||
Последний раз редактировалось dbillika, 18-01-2019 в 17:19. Отправлено: 17:00, 18-01-2019 | #4 |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать Так в скрипте (точнее в приведенном фрагменте) я вижу три "if" и только один "else". Отрабатывается всё, вполне возможно, правильно, но вдруг "if" сравнивает не так как хотелось бы?
Ну и, конечно если приводится реальный кусок кода, то я бы рекомендовал обратить внимание на вот это сравнение для пущей наглядности можно сравнить два вот таких кода: и и чтобы совсем уж наглядно просто в консоли их выполнить. |
|
Отправлено: 18:13, 18-01-2019 | #5 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Elven, Я понял. Проверил... и вернулся к тому, с чего всё это началось. А именно:
Оно меняет только в одну сторону. В другую не работает. Вылета нет(они из за синтаксиса, да). Операция обрабатывается, но не присваевается. |
Отправлено: 18:55, 18-01-2019 | #6 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать dbillika,
если нужен перебор пунктов одной кнопкой о choice придется забыть, например так можно: |
Отправлено: 19:39, 18-01-2019 | #7 |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать |
Отправлено: 19:41, 18-01-2019 | #8 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Кажись проблема в значении переменной. Какой же ужасный в cmd синтаксис.
Если работать с числами или одиночными словами, то все прекрасно. Но если переменная имеет значение, например: "Вася пупкин" или "5 5 5" или ""8""... мозг полностью взрывается. Если в IF переменную указывать в кавычках: if "%x%" проблем становится еще больше. Как правильно отделить в строке значение переменной от остального текста? Обычно это кавычки. Я сейчас перебираю все что знаю, и ничего не помогает. Как сказать переменной, что она: x="мама мыла раму", чтобы она имела значение: мама мыла раму без кавычек и пробелов, когда подставляется в любое место в коде? Но если она имеет значение без кавычек, то оператор if его забракует: if x=мама мыла раму - будет ошибкой. Голова кипит жестко. |
Отправлено: 19:45, 18-01-2019 | #9 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать dbillika,
@Echo Off cls Set "x=мама мыла раму" rem Set "x=мама не мыла раму" If "%x%"=="мама мыла раму" ( Echo В букваре написано %x% под картинкой ) Else ( Echo У нас написано %x% при присвоении переменной x ) pause |
------- Последний раз редактировалось megaloman, 18-01-2019 в 20:06. Отправлено: 19:55, 18-01-2019 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Загрузка - [решено] Windows 10 крашится после выхода из гибридного сна, холодный старт - нормальный | Wusa | Microsoft Windows 10 | 17 | 07-08-2016 12:41 | |
После изменения любого параметра в Asus GPU tweak комп уходит в перезагрузку | drkrol | Непонятные проблемы с Железом | 2 | 20-07-2016 22:37 | |
CMD/BAT - [решено] Путь к текущей папке CMD после передачи параметра | Dragokas | Скриптовые языки администрирования Windows | 1 | 16-01-2012 18:44 | |
Загрузка - [решено] После изменения в BCD параметра nx (noexecute) WINDOWS не загружается | Mike_Onkyo | Microsoft Windows 7 | 5 | 29-12-2011 10:50 | |
Из образа ERDC.iso пытаюсь сделать загрузочную флешку | Flooper | Автоматическая установка Windows 2000/XP/2003 | 2 | 01-04-2011 12:19 |
|