Sublimetext 3: Невозможно получить код выхода во внешнем cmd - PullRequest
0 голосов
/ 01 февраля 2019

Я запускаю код C из sublimetext 3 с GCC в Windows 10, и я хотел бы, чтобы внешний cmd отображал код завершения после запуска exe.

Вот мой файл sublime-build:

{
 "shell_cmd" : "gcc -Wall -pedantic $file_name -o ${file_base_name}",
 "working_dir" : "$file_path",
 "variants":
  [
   {
     "name": "Run",
     "shell_cmd": "gcc -Wall -pedantic $file_name -o ${file_base_name} && start cmd /k ${file_path}/${file_base_name}  "
   }
  ]
}

Я пробовал что-то вроде этого:

"shell_cmd": "gcc -Wall -pedantic $file_name -o ${file_base_name} && start cmd /k ${file_path}/${file_base_name} & echo %errorlevel%  "

Проблема с этим в том, что код выхода отображается в сублиметекстовой оболочке, всегда показывая 0.Я предполагаю, что это внешний код выхода cmd.

Я бы хотел, чтобы часть echo %errorlevel% была выполнена в новом cmd и отображала код выхода моего exe, но я не могу понять, как это сделать.

РЕДАКТИРОВАТЬ: Вот снимок экрана:

работает hello world

Мой main.exe запускается в новом cmd иecho выполняется обратно в собственную консоль sublimetext.

Полагаю, эти вопросы лучше подытожат:
1- Как мне написать этот скрипт, чтобы cmd мог выполнить вторую команду?
2- Как мне открыть его,запустить мой .exe, и только потом отобразить код выхода?

РЕДАКТИРОВАТЬ 2:

Вот новый скриншот.

Здесь вы можете увидеть мой код и внешний cmd под названиемвнутренним cmd sublimetext с помощью команды из моего файла sublime-build.
Я вручную ввел echo %errorlevel% в этот внешний cmd.
Цель, которую я пытаюсь достичь, - изменить команду из моего файла sublime-build, который будет выполнен из внутреннего cmd сублиметекста таким образом, что вызываемый внешний cmd запускает мой код и только затем оценивает echo %errorlevel%, и все это автоматически.

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Я нашел решение после некоторого дополнительного поиска в Google.

Мне нужно было выйти из &, используя ^&

Вот моя новая команда sublime-build:

"shell_cmd": "gcc -Wall -pedantic $file_name -o ${file_base_name} && start cmd /V /k ${file_path}/${file_base_name} ^& echo: ^& echo: ^& echo: ^& echo program ended code : !errorlevel! "

And a screenshot of the result.

0 голосов
/ 01 февраля 2019

Вам нужно будет использовать отложенное расширение для достижения этой цели.errorlevel устанавливается до того, как вы запустите команду, и она хочет изменить в той же строке.Используйте cmd /v, чтобы включить его для cmd:

"shell_cmd": "gcc -Wall -pedantic $file_name -o ${file_base_name} && start cmd /v /k ${file_path}/${file_base_name} & echo !errorlevel!  "
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...