首页 文章

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

提问于
浏览
0

我有两个需要运行的批处理文件 . 在这两个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

  • start“”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

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

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

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

相关问题