在新创建的终端中运行下一个命令

时间:2020-02-12 00:44:15

标签: windows command-line command-prompt

我想在三个单独的终端窗口中运行一个运行三个新命令的命令。但是,我不想引用三个单独的批处理文件。

我意识到我可以运行start打开一个新的终端窗口,并且我可以运行start file.bat打开一个窗口并运行存储在该批处理文件中的命令。但是,我想将所有内容保存在同一文件中。

所以不是:

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 :(得分:0)

我能想到的唯一方法是,在自己的批处理文件中使用一些命令行参数,并在要分割的代码处添加一些goto标签。

示例“ 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分隔路径和文件名,仅将驱动器和路径与{{ 1}}仅用于扩展名的文件名。
如果您不想要标题,那么您可能想要指定%~nx0不变,或者""可能会将start的路径解释为标题,并退出并显示错误消息,因为语法不是匹配。
如果我弄错了,并且三个终端应该只执行相同的代码(您只想将其包含在文件中),则不只是删除“ jump2”和“ jump3”部分,并使用“ jump1”参数调用每个终端(您当然可以重命名)。

GL,HF:)