我有一个DOS批处理脚本,它调用一个java应用程序,它通过控制台UI与用户交互.为了论证,让我们称之为它runapp.bat
的内容
java com.example.myApp
如果在控制台中调用批处理脚本,一切正常.但是,如果从窗口管理器调用脚本,则在应用程序完成执行后,新打开的控制台将立即关闭.我想要的是控制台在所有情况下都保持打开状态.
我知道以下技巧:
pause
在脚本末尾添加命令.如果runapp.bat
从命令行调用,这有点难看.
使用cmd /K java com.example.myApp
这是我迄今为止找到的最佳解决方案,但是从命令行调用时会留下额外的shell环境,因此调用exit
实际上并不关闭shell.
有没有更好的办法?
请参阅此问题:检测批处理文件的执行方式
如果从命令控制台运行,此脚本将不会暂停,但如果在资源管理器中双击,则该脚本将暂停:
@echo off setlocal enableextensions set SCRIPT=%0 set DQUOTE=" :: Detect how script was launched @echo %SCRIPT:~0,1% | findstr /l %DQUOTE% > NUL if %ERRORLEVEL% EQU 0 set PAUSE_ON_CLOSE=1 :: Run your app java com.example.myApp :EXIT if defined PAUSE_ON_CLOSE pause