#windows #powershell #batch-file
Вопрос:
Я написал небольшой пакетный файл для запуска исполняемого файла, расположенного в том же каталоге, с некоторыми переменными среды.
Сам исполняемый файл является узловым сервером, упакованным с pkg, и он работает нормально, но похоже, что программа запускается и продолжает входить в stdout только в том случае, если я нажимаю клавиши, пока терминал находится в фокусе. Если журналы передаются быстро и между журналами нет большой задержки, то программа, похоже, работает нормально, но в противном случае, если есть какое-либо время простоя, то, похоже, для продолжения выполнения ей требуется ввод.
У меня есть этот файл:
@echo off
SET PORT=3004
SET NODE_ENV=development
SET ENV=development
START /d "." main.exe
…и дважды щелкните start_program.bat
по кнопке, которая открывает окно терминала, в котором сервер запускается нормально, но не отвечает на HTTP-запросы, пока я не нажму клавишу. Любой HTTP-запрос просто останавливается, пока я не нажму клавишу в окне терминала, затем запрос продолжается, как будто ничего не случилось.
Не уверен, делаю ли я что-то странное в этом файле , или мне нужно больше параметров START
, но я довольно новичок в запуске кода в Windows, поэтому буду признателен за любое направление.
Комментарии:
1. Нет необходимости использовать
START
для запускаmain.exe
— просто вызовите его напрямую, и чтобы убедиться, что вы ссылаетесь на него в том же каталоге, что и сам пакетный файл, используйте"%~dp0main.exe"
2. Проблема , скорее всего, связана с попыткой использовать
START
, и не по причине, упомянутой в предыдущем комментарии, а потому, что вы также назвали свой скриптstart
. Пожалуйста, переименуйте свой скрипт в имя, которое также не является именем другой команды.3. Отредактировано, чтобы уточнить, что имя моего файла bat на самом деле не start.bat, извините, это был пример. Поведение по-прежнему происходит независимо от имени файла.
Ответ №1:
попробуй убежать main.exe с командой
echo.|main.exe