Вероятно, это связано с магией, которую делает скрипт активации virtualenv, например, создание новой оболочки, чтобы ваш основной скрипт не продолжался.
Не уверен, что это будет работать, но в аналогичном скрипте, который я мог бы сделать,это работает, выполняя следующие команды, связанные с &, вы можете попробовать что-то вроде этого:
@ECHO OFF
IF NOT EXIST ".\venv\" (
ECHO | SET /p msg="Creating virtual environment..."
python -m venv venv
ECHO OK
venv\Scripts\activate.bat & (python -m pip install --upgrade pip setuptools && pip install -r requirements.txt && python runner.py)
) ELSE (
venv\Scripts\activate.bat & python runner.py
)