Почему мой пакетный скрипт не запускает все команды? - PullRequest
0 голосов
/ 26 июня 2018

Я пытаюсь создать для меня скрипт, который активирует виртуальную среду, устанавливает требования и запускает сервер Python.

Мой скрипт выглядит так:

@echo off
cmd /k "cd /d C:\Users\evaknid\venv\Scripts & activate & pip install -r reqs.txt"  

@echo off
cmd /k "cd /d C:\Users\evaknid\rm_analytics\developer-management-tool & python manage.py runserver"  

Моя проблема в том, что скрипт запускает только первую часть каждый раз и не переходит к другой, которая запускает сервер.

Какую ошибку я совершил?

Я запускаю это на компьютере с Windows 7 и использую cmd для запуска скрипта, если это поможет.

Ответы [ 3 ]

0 голосов
/ 26 июня 2018

После некоторого тестирования я нашел решение моей проблемы:

@echo off
cmd /k "cd /d  C:\Users\evaknid\venv\Scripts & activate & pip install -r reqs.txt & cd /d    C:\Users\evaknid\rm_analytics\developer-management-tool & python manage.py runserver"

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

0 голосов
/ 26 июня 2018

Я не вижу необходимости в создании нового экземпляра cmd.exe или необходимости объединять ваши команды в одной строке:

@PushD "C:\Users\evaknid\venv\Scripts"
@Call "activate.bat"
@PIP install -r reqs.txt  
@PushD "..\..\rm_analytics\developer-management-tool"
@python manage.py runserver
@PopD
@PopD

Две нижние строки, вероятно, являются необязательными, (может быть удалено, если вы не продолжаете сценарий после этих команд) .

Может даже не потребоваться переходить в каталоги или выходить из него, просто используя синтаксис, аналогичный этому, Call "C:\Users\evaknid\venv\Scripts\activate.bat", может работать одинаково хорошо в вашей среде.

0 голосов
/ 26 июня 2018

команда 'cmd' вызывает новую командную строку каждый раз, когда она вызывается. Таким образом, вы в основном создаете два отдельных экземпляра командной строки с помощью этих двух вызовов.

Если вы вызываете файл bat из новой cmdline, вам не нужен cmd / k

@echo off
cd /d C:\Users\evaknid\venv\Scripts & activate & pip install -r reqs.txt  

cd /d C:\Users\evaknid\rm_analytics
developer-management-tool
python
manage.py
runserver

/ d на самом деле необязательно, так как вы не меняете диски. Независимо от того, вы вместе с командами или нет, решать только вам.

robvanderwoude.com - хороший ресурс, если у вас проблемы с командами пакетного файла

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...