繁体   English   中英

cmd和bat的行为不同

[英]cmd and bat behaving differently

编辑:

与同事讨论此问题后,我们认为我们知道为什么.bat与在cmd窗口中逐行键入时的运行方式不同。 我们认为行./venv/Scripts/activate.bat在外壳./venv/Scripts/activate.bat激活虚拟环境,而不是其余代码的运行位置。 从那一行开始,我将需要所有代码在同一shell中运行。 (仅供参考,由于我相对较新,因此我不确定这是否有意义。)

我正在尝试通过运行带有必要命令的bat文件来创建虚拟环境。 当我通过将.bat代码中的行复制粘贴到cmd窗口中并分别运行每个行来运行这些代码时,这些代码将按预期运行。 但是,当我运行.bat文件时,它不起作用。

我认为挑战来自以下事实:bat脚本必须在目录中移动,因为虚拟环境必须在本地文件夹中创建,而随后调用的脚本和文件则托管在网络文件夹中。

此设置无法更改,因此我需要能够在.bat文件中的目录之间正确移动。

我在StackOverflow中四处张望,找不到与类似行为有关的任何问题。 我一直在阅读相关文档,但是还没有发现任何有用的信息。 我正在运行anaconda3发行版。 Windows10。我不确定哪些信息可能会对故障排除有所帮助,所以如果您需要更多信息,请告诉我。 您将在下面找到我的代码。

echo ON

REM Change directory to user's local dir
chdir C:\Users\USERNAME
C:

REM Check whether environments folder exists, if not, create it.
if not exist "C:\Users\USERNAME\Environments\" mkdir C:\Users\USERNAME\Environments

REM Create virtual environment in this new/existing folder and activate it.
python -m venv venv/
"./venv/Scripts/activate.bat"

REM Change directory to network drive where document files are located
chdir I:\NETWORKDIR_PATH\FOLDER_OF_INTEREST
I:

REM Make sure necessary packages are installed.
pip install -r ./src/requirements.txt

REM Run script and close shell after 20 secs
python "./src/main_script.py"

REM FOLDER_OF_INTEREST contains the following items:
REM two excel files which will interact with the main_script.py script
REM a folder called "src" which has the packages to be installed within my environment
REM "src" also contains two python scripts. The first is the main_script.py, the other contains functions called by main_script.py

就目前而言,当我在cmd窗口中单独运行每一行时,一切都很好。

如果我尝试运行.bat文件,则代码将一直运行到

python -m venv venv/
"./venv/Scripts/activate.bat"

此时,cmd窗口退出,什么也没有发生...

任何帮助/建议表示赞赏!

PS:那里有ping命令,因为如果没有,则cmd窗口会退出得太快,我看不到发生了什么。

我们认为行./venv/Scripts/activate.bat会在外壳程序中激活虚拟环境,而不是其余代码的运行位置。

不会。批处理文件会逐行执行,直到达到EOF (文件结束)为止。 因此,在activate.bat结尾时,解释器认为工作已完成,仅此而已。

为了能够“返回”调用脚本,您需要调用被调用脚本(基本上可以保存返回点)

要从字面上在另一个cmd实例中启动脚本(您称之为“外壳中的虚拟环境”),您需要使用start命令。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM