Открывающееся окно из cmd

Я создал меню в CMD, где в зависимости от опции открывалось окно с определенным путем. Я использую команду "Пуск".

Я получил его работать до такой степени, что я могу выбрать вариант, и он откроет нужное окно. Однако, если в том же сеансе я выберу другую опцию, откроется то же самое окно, а не другое. Например, если я выбрал вариант 1, окно откроется в G:\Folder_1. Когда я выбираю вариант 2, вместо перехода к G:\SUBFOLDER\Folder_2 он переходит к G:\Folder_1. Если я закрою окно, снова открою файл.bat и выберу вариант 2, он направит меня в нужную папку. Как я могу открыть разные окна в одном разделе?

Я попытался запустить каждый пункт меню как отдельный файл.bat и использовать команду запуска для запуска файла, но он сделал то же самое.

Вот пример моего кода:

:MENU
    echo [1]Option 1
    echo [2]Option 2
    echo [3]Option 3
    echo [4]Exit

    set /p MS= Choose your option: 

        If %MS%==1 goto OPTION_1
        If %MS%==2 goto OPTION_2
        If %MS%==3 goto OPTION_3
        If %MS%==4 goto END

        :OPTION_1
        G:
        cd "Folder_1"

        Start .
        goto :Menu

        :OPTION_2
        G:
        cd SUBFOLDER
        cd Folder_2

        start .
        goto :Menu

        :OPTION_3
        G:
        cd SUBFOLDER
        cd Folder_3
        start .
        goto :Menu

        :END
        Pause

2 ответа

Решение

Ваш код написан так, что вы запускаете свою рабочую папку как диск "G:\". Затем, когда вы выбираете вариант 1, вы меняете текущую папку на "G:\Folder_1". При выполнении команды "Старт" открывается окно с этим путем. Теперь в следующий раз, когда вы перейдете к варианту 2, вам следует изменить текущую папку на "G:\" в соответствии с вашим кодом. Но на самом деле вы остаетесь в "G:\Folder_1".

Относительно этого пути все ваши команды CD становятся недействительными.

Исправление относительных путей решит проблему. Я отредактировал твой код, чтобы при каждом вводе и выборе опции менять текущий рабочий каталог на корневой диск "G:\". Таким образом, относительно текущего рабочего каталога остальные команды CD в опциях становятся действительными.

Возможно, вы пропустили команду "cd G:\" во время написания кода.

:MENU
echo [1]Option 1
echo [2]Option 2
echo [3]Option 3
echo [4]Exit

set /p MS= Choose your option: 

    If %MS%==1 goto OPTION_1
    If %MS%==2 goto OPTION_2
    If %MS%==3 goto OPTION_3
    If %MS%==4 goto END

    :OPTION_1
    cd G:\
    G:
    cd "Folder_1"

    Start .
    goto :Menu

    :OPTION_2
    cd G:\
    G:
    cd SUBFOLDER
    cd Folder_2

    start .
    goto :Menu

    :OPTION_3
    cd G:\
    G:
    cd SUBFOLDER
    cd Folder_3
    start .
    goto :Menu

    :END
    Pause

Я бы предложил следующий метод, включив местоположение в Start команда:

:MENU
Echo [1]Option 1
Echo [2]Option 2
Echo [3]Option 3
Echo [4]Exit

Set "MS="
Set /P "MS= Choose your option:  "

If "%MS%"=="1" GoTo OPTION_1
If "%MS%"=="2" GoTo OPTION_2
If "%MS%"=="3" GoTo OPTION_3
GoTo END

:OPTION_1
Start "" /D "G:\Folder_1" "Option 1.exe"
GoTo :Menu

:OPTION_2
Start "" /D "G:\SUBFOLDER\Folder_2" "Option 2.exe"
GoTo :Menu

:OPTION_3
Start "" /D "G:\SUBFOLDER\Folder_3" "Option 3.exe"
GoTo :Menu

:END
Pause

Было бы лучше использовать Choice команда, если ваши операционные системы имеют его. (Войти Choice /? в командной строке для получения дополнительной информации).

Другие вопросы по тегам