Batch файл запускается и в командной строке Visual Studio Code, и в командной строке Windows

Рейтинг: -1Ответов: 1Опубликовано: 14.06.2023

Недавно купил ноутбук, перешёл с Windows 10 на 11, установил всякие "программерские штучки" и Visual Studio Code. Я создал файл newproj.bat, который автоматизирует создание проекта. Но когда я его открываю, он запускается и в командной строке Visual Studio Code, и в командной строке Windows. newproj.bat:

@echo off

mkdir %1
@REM создаём папку с проектом;

cd %1 
mkdir src
mkdir include
mkdir build
mkdir res
@REM создаём папки src, include, build, res;

NUL > CMakeLists.txt
cd src
NUL > main.cpp 
@REM создаём файлы CMakeLists.txt и main.cpp;

start code main.cpp ..\CMakeLists.txt
@REM запускаем только что созданные файлы в Visual Studio Code;

cd ..\build
@REM переходим в папку build для удобства использования CMake;

введите сюда описание изображения

На Windows 10 всё работало отлично, и я знаю, что это окно можно закрыть 1 щелчком мыши, но всё же, не хочется делать лишние телодвижение. Как предотвратить появление окна?

Ответы

▲ 0Принят

Это происходит из-за строчки "start code".

Дело в том, что code здесь является пакетным файлом code.cmd со следующим содержимым:

@echo off
setlocal
set VSCODE_DEV=
set ELECTRON_RUN_AS_NODE=1
"%~dp0..\Code.exe" "%~dp0..\resources\app\out\cli.js" --ms-enable-electron-run-as-node %*
endlocal

Не знаю я почему создатели VS Code не стали упаковывать её в один исполнимый файл, а сделали пакетный файл для запуска, но получается следующее:

Ваша команда start code запускает пакетный файл, этот пакетный файл запускает VS Code и завершает работу, но консольное окно остаётся потому что именно так работает запуск пакетных файлов командой start.

Исправить эту проблему можно заменив команду start на команду call, которая как раз и предназначена для вызова других пакетных файлов в том же окне:

call code main.cpp ..\CMakeLists.txt