Выполнить следующую команду во вновь созданном терминале - PullRequest
0 голосов
/ 12 февраля 2020

Я хотел бы запустить одну команду, которая запускает три новые команды, в трех отдельных терминалах windows. Однако я не хочу ссылаться на три отдельных пакетных файла.

Я понимаю, что могу запустить start, чтобы открыть новое окно терминала, и что я могу запустить start file.bat, чтобы открыть окно и выполнить команду (s), которые хранятся в этом пакетном файле. Тем не менее, я хотел бы сохранить все в одном файле.

Вместо:

start file-1.bat
start file-2.bat
start file-3.bat

Я хотел бы сделать:

start [code to run in new window]
start [code to run in new window]
start [code to run in new window]

Если я цепью команды с && открывается новый терминал, но следующая команда запускается в исходном окне.

1 Ответ

0 голосов
/ 24 апреля 2020

Единственный способ, о котором я могу думать, - это когда вы используете некоторые параметры командной строки для своего собственного пакетного файла и добавляете некоторые метки перехода, где вы хотите, чтобы ваш код разделения был.

Пример «myfile.bat»:

@echo off
set thisfile=%~0
echo Unquoted Param1=%~1

if "%~1" == "jump1" goto jump1
if "%~1" == "jump2" goto jump2
if "%~1" == "jump3" goto jump3

start "Title1" "%thisfile%" "jump1"
start "Title2" "%thisfile%" "jump2"
start "Title3" "%thisfile%" "jump3"

:jump1
echo First new console window executes this
pause
goto eof

:jump2
echo Second new console window executes this
pause
goto eof

:jump3
echo Third new console window executes this
pause
goto eof

:eof

Возможно, вам нужно немного поиграть с командой start. См. start /? для синтаксиса и особенно для параметра /D, который устанавливает каталог для выполнения команды. Если необходимо, разделите путь и имя файла с %~dp0 только для диска и пути и %~nx0 для имени файла с расширением только.
Если вы не хотите заголовок, вы можете указать "" still или start может интерпретировать путь к myfile.bat как заголовок и завершится с сообщением об ошибке, потому что синтаксис не совпадает .
Если я ошибся, и три терминала просто должны выполнить один и тот же код, который вы хотели бы видеть только в своем файле, чем просто удалить разделы "jump2" и "jump3" и вызвать каждый терминал с помощью "jump1" "параметр (который вы можете переименовать, конечно).

GL, HF:)

...