为避免经常重复任务,我正在设置一个批处理文件(在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”背后它没有启动命令。
有什么想法吗?
答案 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
意味着命令提示符将在目标命令运行后关闭。如果您不需要查看命令的输出,或者它有自己的暂停,这可能是合适的。