我创建了一个.bat文件,我想自动运行一个开源程序。正如您可能看到我正在使用下面的代码但是一旦激活虚拟环境,它就不会从那里更改目录,因此它可能运行python脚本。我在这里尝试了几个修改,但似乎没有一个适合我。我该怎么做才能使脚本正常工作?
谢谢。
rem Virtual environment works
cd "C:\Projects"
start ENV\Scripts\activate
rem DOES NOT CHANGE THE DIRECTORY SO IT MAY RUN PYTHON SERVER, TRIED ALSO SEVERAL MODIFICATIONS BUT STILL HAVE THE SAME ISSUE, ALSO PYTHON WONT START
rem COMMAND TO START SERVER--> python manage.py runserver
cd "C:\Projects\my_project"
start C:\Python27\python.exe C:\Projects\my_project\manage.py runserver
答案 0 :(得分:1)
使用此批次代码:
cd /D "C:\Projects"
call ENV\Scripts\activate.bat
start "Run Server" /D "C:\Projects\my_project" C:\Python27\python.exe C:\Projects\my_project\manage.py runserver
如果当前目录和指定目录不在同一驱动器上,则没有选项/D
的命令 CD 不会执行任何操作。因此,建议在指定应成为当前目录的目录的完整路径时始终使用选项/D
。
命令 START 在新的命令进程中运行批处理文件或控制台应用程序,该进程与当前命令进程并行执行,而不另外使用选项/WAIT
来暂停当前命令进程,直到启动命令进程终止。
批处理文件显然设置了环境变量。这是在附加命令过程中完成的,该过程对当前命令进程的环境变量没有影响,因为每个进程都有自己的环境变量列表,这些变量是在Windows从当前进程开始的过程中复制的。
如果批处理文件activate
具有.cmd
作为文件扩展名,则必须相应地调整批处理代码中的第二行。
需要命令 CALL 来调用批处理文件,该文件现在在当前命令进程的环境中设置环境变量。完成此调用批处理文件的执行后,当前命令进程将继续执行当前批处理文件的第三行,但批处理文件activate
包含不带选项exit
的命令/B
或语法错误。
最后,命令 START 用于在新命令进程中运行 Python ,其中Windows从当前命令进程复制的环境变量设置为C:\Projects\my_project
当前目录。
要了解使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。
call /?
cd /?
start /?
另请参阅问题的Stack Overflow答案: