Windows 批处理中的呼叫后呼叫不显示

Windows 批处理中的呼叫后呼叫不显示

我有一个这样的批处理文件,用于创建和激活 python 虚拟环境并安装一些软件包

创建.bat:

mkdir "%CD%\.venv"
python -m venv .venv
call .venv\Scripts\activate
python -m pip install --upgrade pip

第三行是使用批处理的调用命令运行的批处理文件。我得到的结果是:

E:\test>create.bat

E:\test>mkdir "E:\test\.venv"

E:\test>python -m venv .venv

E:\test>call .venv\Scripts\activate
Collecting pip
  Using cached https://files.pythonhosted.org/packages/54/0c/d01aa759fdc501a58f431eb594a17495f15b88da142ce14b5845662c13f3/pip-20.0.2-py2.py3-none-any.whl
Installing collected packages: pip
  Found existing installation: pip 19.0.3
    Uninstalling pip-19.0.3:
      Successfully uninstalled pip-19.0.3
Successfully installed pip-20.0.2

但是,正如您所看到的,运行最后一行时我没有看到我期望的典型提示文本:

...
(.venv) E:\test\> python -m pip install --upgrade pip

它只是打印剩余操作的输出。通常这不会有问题,但稍后的一项任务是要求输入的 Python 脚本,但所有内容都被忽略并在没有询问的情况下运行。

作为参考,如果我逐个手动输入命令,我将添加输出:

E:\test>mkdir "%CD%\.venv"

E:\test>python -m venv .venv

E:\test>call .venv\Scripts\activate

(.venv) E:\test>python -m pip install --upgrade pip
Collecting pip
  Using cached https://files.pythonhosted.org/packages/54/0c/d01aa759fdc501a58f431eb594a17495f15b88da142ce14b5845662c13f3/pip-20.0.2-py2.py3-none-any.whl
Installing collected packages: pip
  Found existing installation: pip 19.0.3
    Uninstalling pip-19.0.3:
      Successfully uninstalled pip-19.0.3
Successfully installed pip-20.0.2

答案1

我自己找到了答案。我没想太多,因为我调用的批处理脚本是 Python 自动生成的脚本。但它包含了这一行

@echo off

一开始。当它再次返回到我的脚本时,这个命令当然仍然有效。通过将脚本重写为:

mkdir "%CD%\.venv"
python -m venv .venv
call .venv\Scripts\activate
@echo on
python -m pip install --upgrade pip

相关内容