![为什么批处理脚本比手动执行命令花费的时间更长](https://linux22.com/image/1504947/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%89%B9%E5%A4%84%E7%90%86%E8%84%9A%E6%9C%AC%E6%AF%94%E6%89%8B%E5%8A%A8%E6%89%A7%E8%A1%8C%E5%91%BD%E4%BB%A4%E8%8A%B1%E8%B4%B9%E7%9A%84%E6%97%B6%E9%97%B4%E6%9B%B4%E9%95%BF.png)
我编写了一个批处理脚本来自动启动我的开发环境,但执行时间太长了。事实上,它实际上从未完成过。它在 之后停止solr start
。我只是假设如果任其发展,它最终会完成。
有什么原因导致它在solr start
?solr start
完全完成后不继续执行,然后显示的只是命令的最后一行输出之后的闪烁下划线。
这是我的批处理脚本:
cd C:\AerospikeVM
vagrant up
cd C:\solr-6.1.0\bin
solr start
cd C:\XAMPP
xampp-control
cd C:\Program Files\Android\Android Studio\bin
studio64.exe
cd C:\Program Files\NetBeans 8.1\bin
netbeans64.exe
cd C:\Program Files\Genymobile\Genymotion
player --vm-name "Samsung Galaxy S6 - 6.0.0 - API 23 - 1440x2560"
cd C:\Program Files\Git
git-bash.exe
cd C:\Users\me\Programs\Program
start notepad Phase2.0_toDoCache.txt
start notepad Phase2.0_toDoList.txt
答案1
如果你只是启动一个批处理文件(或.cmd
命令脚本,基本是同一件事) 在另一个批处理文件中,当内部批处理完成时它不会返回,它只会退出。
为了避免这种行为,您可以使用命令Call
来调用嵌套/内部批处理文件,这将导致它在完成后返回到父批处理文件,并继续执行命令。
从call /?
:
从另一个批处理程序调用一个批处理程序。
CALL [驱动器:][路径]文件名 [批处理参数]
因此,在启动 Solr 后,更改solr start
为call solr.cmd start
,您的批处理文件应该继续。
答案2
发生这种情况的原因是 solr start 正在启动一个程序,而您的脚本现在正在等待该程序完成后才能继续。
为了停止这种情况,你需要使用命令start "title" "program"
因此,在您的示例中,您可能希望替换solr start
为start "solr" "solr start"