Las llamadas después de una llamada en el lote de Windows no se muestran

Las llamadas después de una llamada en el lote de Windows no se muestran

Tengo un archivo por lotes como este para crear y activar un entorno virtual de Python e instalar algunos paquetes.

crear.bat:

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

La tercera línea es un archivo por lotes que se ejecuta utilizando el comando de llamada del lote. Lo que obtengo es esto:

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

Sin embargo, como puede ver, cuando ejecuto la última línea no veo el texto típico que esperaba:

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

Simplemente imprime el resultado del resto de las operaciones. Normalmente esto no sería un problema, pero una de las tareas posteriores es un script de Python que solicita información, pero todo se ignora y se ejecuta sin preguntar.

Como referencia, estoy agregando el resultado si escribo los comandos manualmente uno por uno:

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

Respuesta1

Yo mismo encontré la respuesta. No pensé demasiado en ello ya que el script por lotes que llamé era un script generado automáticamente desde Python. Pero incluía la línea

@echo off

al principio. Por supuesto, este comando todavía estaba activo cuando volvió a mi secuencia de comandos. Resuelto reescribiendo el script para:

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

información relacionada