Chamadas após chamada no lote do Windows não aparecem

Chamadas após chamada no lote do Windows não aparecem

Eu tenho um arquivo em lote como este para criar e ativar um ambiente virtual python e instalar alguns pacotes

criar.bat:

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

A terceira linha é um arquivo em lote executado usando o comando de chamada do lote. O que eu recebo é isto:

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

No entanto, como você pode ver, ao executar a última linha não vejo o texto de prompt típico que esperava:

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

Ele apenas imprime a saída do restante das operações. Normalmente isso não seria um problema, mas uma das tarefas posteriores é um script Python que solicita entrada, mas tudo é ignorado e executado sem solicitação.

Para referência, estou adicionando a saída se digitar os comandos manualmente, um por um:

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

Responder1

Eu mesmo encontrei a resposta. Não pensei muito nisso, pois o script em lote que chamei era um script gerado automaticamente em Python. Mas incluía a linha

@echo off

no inicio. É claro que este comando ainda estava ativo quando retornou ao meu script novamente. Resolvido reescrevendo o script para:

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

informação relacionada