当前位置:  开发笔记 > 开发工具 > 正文

是否有一种方法可以在批处理脚本中仅在从Windows Manager调用时保持控制台打开?

如何解决《是否有一种方法可以在批处理脚本中仅在从WindowsManager调用时保持控制台打开?》经验,为你挑选了1个好方法。

我有一个DOS批处理脚本,它调用一个java应用程序,它通过控制台UI与用户交互.为了论证,让我们称之为它runapp.bat的内容

java com.example.myApp

如果在控制台中调用批处理脚本,一切正常.但是,如果从窗口管理器调用脚本,则在应用程序完成执行后,新打开的控制台将立即关闭.我想要的是控制台在所有情况下都保持打开状态.

我知道以下技巧:

pause在脚本末尾添加命令.如果runapp.bat从命令行调用,这有点难看.

使用cmd /K java com.example.myApp这是我迄今为止找到的最佳解决方案,但是从命令行调用时会留下额外的shell环境,因此调用exit实际上并不关闭shell.

有没有更好的办法?



1> Patrick Cuff..:

请参阅此问题:检测批处理文件的执行方式

如果从命令控制台运行,此脚本将不会暂停,但如果在资源管理器中双击,则该脚本将暂停:

@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

推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有