批处理windows命令写入提示但没有执行

时间:2016-09-06 10:02:34

标签: windows batch-file cmd

为避免经常重复任务,我正在设置一个批处理文件(在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>”,我想写一下:“cordova build android”背后它没有启动命令。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

你会这样吗:

@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%)"

答案 1 :(得分:1)

为了提供可重复的执行(如注释中所述),您可以将相关命令放在一个带有"退出"的循环中。选项:

@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意味着命令提示符将在目标命令运行后关闭。如果您不需要查看命令的输出,或者它有自己的暂停,这可能是合适的。