在批处理文件中完成所有进程后关闭Windows命令提示符

时间:2014-09-29 18:53:00

标签: java windows batch-file command-line cmd

我需要运行两个批处理文件。在这两个bat文件中调用两个不同的java文件。

Java文件:J1.jar,J2.jar并包装在J1.bat(xxx / java -jar J1.jar)和J2.bat中 Bath文件:batch1.bat,batch2.bat 可执行程序:p1.exe,p2.exe,p3.exe,p4.exe

J1将打开一个命令提示符(cmd提示符窗口#1)并触发batch2.bat(cmd提示符窗口#2),在完成batch2之后,J1将执行其他一些操作然后退出。因此我绝对需要cmd提示窗口#2关闭并返回到cmd提示窗口#1,这样J1就可以完成它必须做的事情。

现在,在batch2.bat完成后,窗口停留,显然它不会将控制权返回到cmd提示窗口#1。

以下是两个批处理文件

batch1.bat

call J1 batch2.bat
exit

batch2.bat

call J2 p1 p1_args
start /b J2 p2 p2_args    
start /b J2 p3 p3_args
call J2 p4 p4_args
exit

我尝试过以下操作,但没有一个会关闭cmd提示符窗口#2

  • 启动J2 p2 p2 p2_args(这将打开另一个窗口而不关闭cmd提示窗口#2
  • 开始"" J2 p2 p2_args(这将打开另一个窗口,不会关闭cmd提示窗口#2)
  • start / b cmd / c J2 p2 p2_args(这不会打开新窗口,但不会关闭cmd提示窗口#2)
  • 在batch2.bat中使用exit / b(不关闭cmd提示符窗口#2)

我还尝试将这两个p2和p3放在一个单独的bat文件中,并从batch2.bat调用该bat文件,但该命令提示符窗口仍然不会关闭。

有没有办法关闭第二个命令提示符窗口?我听说使用自动热键来做窗口脚本,这是一个解决方案和更好的窗口脚本编写方法吗?

我非常感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

观察之后,我注意到在cmd“退出”之后,它将不会返回到提示符,我将不得不按Enter键以使事情继续进行。我决定在退出后放一条新线,它有效。我用以下代码行换出了退出。

@echo off
set NLM=^
set NL=^^^%NLM%%NLM%^%NLM%%NLM%
exit %NL%

这是来自这篇文章,Explain how dos-batch newline variable hack works