Войти

Показать полную графическую версию : [решено] Помогите реализовать ветвление в bat файле.


Eugene Shugaev
08-03-2014, 15:24
Я делаю загрузочный USB HDD и мне не не удобно перезагружаться каждый раз. Я решил проблему с помощь Vitual Box. Но там нет поддержки загрузки с внешних USB устройств через графический интерфейс. Ну я написал дополнение к virtual box, в виде bat файла. Но есть проблема:
rem Эта строчка принимает пeременную
set /p do=Enter:
rem А эта передаёт управление "модулю"
goto %do%
rem Но если такого модуля нет, то приложение завершает работу, а мне надо что бы оно передавало управление "модулю" :home (пример: goto :home)

rem Это список "модулей":
rem :home
rem :not taskkill
rem :help
rem :1
rem :2
rem :3
rem :4
rem :5
rem :6
rem :7
rem :8
rem :exit

Сам bat я прикрепил. Приложение требует права администратора.

Foreigner
08-03-2014, 15:39
Eugene Shugaev, Если правильно понял

@echo off
setlocal

:home
set "do=home"

set /p do="Enter: "

if /i "%do%"=="home" goto:home
if "%do%"=="1" goto:1
if ...
if ...

goto:home

:1
:2
....

Eugene Shugaev
08-03-2014, 16:05
Вы не совсем поняли, мне надо что бы если :

set /p do="Enter: fkjlehrg;iaergipregnrnrt" - "fkjlehrg;iaergipregnrnrt"это пример того что могут написать, и что бы если это "fkjlehrg;iaergipregnrnrt", не было равно ни одному модулю из списка
rem :home
rem :not taskkill
rem :help
rem :1
rem :2
rem :3
rem :4
rem :5
rem :6
rem :7
rem :8
rem :exit
То оно переходило в :home

Foreigner
08-03-2014, 16:12
Eugene Shugaev, Ну и? У меня как-то не так?

@echo off
setlocal

:home

:: Устанавливаем значение do по умолчанию, на случай пустого ввода (просто Enter)
set "do=home"

set /p do="Enter: "

:: Проверяем значение do
if /i "%do%"=="home" goto:home
if "%do%"=="1" goto:1
if ...
if ...

:: Если ввели не предусмотренное значение уходим в home
goto:home

:1
:2
....

Eugene Shugaev
08-03-2014, 16:32
Foreigner, Все спасибо я разобрался. + тебе




© OSzone.net 2001-2012