Перейти к содержимому

cmd.exe запущен с другого cmd.exe

0

Я делаю сценарий, который я начинаю с bash.exeCygwin для Windows:

C:\bash.exe my_script.sh 

Это меняет мой Python Virtual Env в зависимости от некоторых условий. Для тех, кто знает Virtualenv, мне нужно использовать «workon.bat», и единственный известный мне способ выполнения пакетного скрипта - это следующий:

... cmd /K "workon.bat" "$required_venv" ... 

Это работает, но я сейчас в новом cmd.exeэкземпляре, запущенном из предыдущего. Доказательство: ввод текста exitвернет меня к этому:

C:\bash.exe my_script.sh *ENTER* (venv) C:\ (venv) C:\exit *ENTER* C:\ 

Фактически, каждый раз, когда я буду запускать этот скрипт, я буду в новом экземпляре:

cmd.exe cmd.exe cmd.exe cmd.exe ... 

Как решить эту надоедливую рекурсивную ситуацию? Одним из решений может быть обнаружение того, что я запущен в cmd, и выход. Я был бы идеальным для выполнения пакетного workon.bat, оставаясь внутри cmd.

551 просмотр
snoob dogg спросил 7 лет назад
S 108

2 ответа

1

Вместо

cmd /K "workon.bat" "$required_venv" 

использование

cmd /C "workon.bat" "$required_venv" 

Как он закроет новую оболочку после запуска командного файла, из cmd /?

/c Carries out the command specified by String and then stops. /k Carries out the command specified by String and continues. 

К сожалению, это не работает, потому что, если он закрывает новую оболочку, он также закрывает виртуальный venv, верно? : (

snoob dogg · 7 лет назад · 0

использование / c не сохраняет virtualenv: /

snoob dogg · 7 лет назад · 0
matzeri ответил 7 лет назад
M 1 227
0

@matzeri не прав, так cmd /Cкак он также закроет virtualenv, что неожиданно. Я думаю, что делать эту работу в Windows, используя Cygwin, Bash и script-shell, было плохой идеей, вместо этого я создал пакетный файл.

snoob dogg ответил 7 лет назад
S 108