批处理窗口命令写入提示符但不执行

为了避免重复执行任务,我正在设置一个batch file(在WINDOWS 10中)。 它打开几个CMD PROMPT到一个特定的目录并启动一个命令。

对于一种情况,我希望打开CMD PROMPT,去特定的目录,并在PROMPT中设置COMMAND而不启动它。 然后,我只需要点击ENTER来随时启动该命令。

这是我的代码:

setlocal ENABLEEXTENSIONS set CordovaProjPath="C:\MyPath\" start cmd /k "cd /d %CordovaProjPath% && cordova build android" 

有了这个代码,它会启动命令“cordova build android”。

如果我走start cmd /k "cd /d %JCACordovaProjPath%而不是start cmd /k "cd /d %JCACordovaProjPath% && cordova build android" 它给了我提示与:”C:\ MyPath>“, d喜欢写下:“cordova build android”,而不用启动命令。

任何想法?

为了提供可重复执行(如注释中所述),可以使用“quit”选项将相关命令放在循环中:

 @Echo Off setlocal Set "CordovaProjPath=C:\MyPath" Set "CommandToRun=cordova build android" :loop Cd /D %CordovaProjPath% Echo %CommandToRun% set QUIT= set /p QUIT=Press ENTER to run command or 'Q' to quit: if /i "%QUIT%" == "Q" goto :eof %CommandToRun% goto :loop 

与原始版本不同,这将在重复循环的相同命令窗口中运行目标命令。 根据有关的命令做什么,这可能是更有吸引力(少窗口弹出)。 但是,有些命令可能导致主窗口关闭; 如果是这种情况,您可以通过两种不同的方式之一恢复在自己的窗口中运行命令。 在每种情况下,都要替换这一行:

  ... %CommandToRun% ... 

在自己的窗口中运行并保持打开

  ... start "%CommandToRun%" /wait cmd /k %CommandToRun% ... 

在目标命令运行之后,使用/k将使命令提示符窗口保持打开 – 如果需要查看命令的输出并且没有自己的暂停,这可能是合适的。

在自己的窗口运行,然后关闭

  ... start "%CommandToRun%" /wait cmd /c %CommandToRun% ... 

使用/c将意味着命令提示符将在目标命令运行后关闭。 如果您不需要查看命令的输出,或者它有自己的暂停,这可能是适当的。

你会这样吗?

 @Echo Off Set "CordovaProjPath=C:\MyPath" Set "CommandToRun=cordova build android" Start "%CommandToRun%" Cmd /K "Cd /D %CordovaProjPath%&Echo %CommandToRun%&Pause>Nul&%CommandToRun%" 

以下是可能允许替代双引号方法的替代方法:

 @Echo Off Set CordovaProjPath="C:\MyPath" Set CommandToRun="cordova build android" Start %CommandToRun% Cmd /K "(Cd /D %CordovaProjPath%)&(Echo %CommandToRun%)&(Pause>Nul)&(%CommandToRun%)"