Java 执行批处理文件解决方案.docVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java 执行批处理文件解决方案

Java是种跨平台的语言,我们经常碰到需要通过Java调用windows下某些程序。有些第三方厂商如(ANT),也提供了调用windows下可执行程序的方法,但我们往往需要调用一些批处理命令。而Java却不提供。这里,我采用一种变相的调用方法,使得Java能调用批处理命令。      前期准备      Quick Batch File (De)Compiler      将任何BAT、CMD批处理脚本编译为EXE文件。      1、运行exe 文件      Java JDK里已经提供了调用的方法,不在累赘,代码如下。         try {   String command = notepad;   Process child =   Runtime.getRuntime().exec(command);   } catch (IOException e)   {      }      2、运行 bat(批处理) 文件      Java对批处理文件还不支持。刚开始一直在研究Java如何调用批处理文件,始终找不到解决方法。后来只好绕过批处理,考虑如何将批处理转换为exe可执行文件。然后再通过Java调用可执行文件。      在Google上搜索一下,找到Quick Batch File (De)Compiler,可以将任何BAT、CMD批处理脚本编译为EXE文件。使用了一下,果然可以。      Quick Batch File (De)Compiler使用非常简单:      Quickbfc 文件名.bat 文件名.exe(将批处理命令编译为可执行文件)      quickbfd 文件名.exe 文件名.bat(将可执行文件反编译为批处理命令)      然后,我们再按第一种方法通过Java 调用,即可。 BeanSoft 的实践备注: 因为我要实现调用其他目录里面的 BAT 文件, 具体说就是 Tomcat 的 startup.bat 文件, 目前可以证明的是如果程序启动目录位于 Tomcat 的 bin 目录下, 调用批处理文件没有问题, 而如果不在那个目录来调用 startup.bat, 那么就算使用 Quick Batch File (De)Compiler 也不能正常运行 BAT, 原因就是当前路径不对. OK, 问题集中在如何设置当前路径下了. 我们看看批处理环境的 start 的用法: start /? 启动另一个窗口运行指定的程序或命令。 START [title] [/Dpath] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED] ????? [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL] ????? [/WAIT] [/B] [command/program] ????? [parameters] ??? title???? 在窗口标题栏中显示的标题。 ??? path??????? 起始目录 ??? B?????????? 在不创建新窗口的情况下开始应用程序。 除非 ??????????????? 启动 ^C 处理,否则该应用程序会忽略 ^C 处理; ???????????????? ^Break 是唯一可以中断该应用程序的方式 ??? I?????????? 新环境是传递给 cmd.exe 的原始环境, ??????????????? 而不是当前环境 ??? MIN???????? 开始时窗口最小化 ??? MAX???????? 开始时窗口最大化 ??? SEPARATE??? 在分开的空间内开始 16 位 Windows 程序 ??? SHARED????? 在分共享的空间内开始 16 位 Windows 程序 ??? LOW???????? 在 IDLE 优先级类别开始应用程序 ??? NORMAL????? 在 NORMAL 优先级类别开始应用程序 ??? HIGH??????? 在 HIGH 优先级类别开始应用程序 ??? REALTIME??? 在 REALTIME 优先级类别开始应用程序 ??? ABOVENORMAL 在 ABOVENORMAL 优先级类别开始应用程序 ??? BELOWNORMAL 在 BELOWNORMAL 优先级类别开始应用程序 ??? WAIT??????? 启动应用程序并等候它结束 ??? command/program ??????????????? 如果是内部 cmd 命令或批文件,那么该命令处理器是 ??????????????? 用 /K 命令行开关运行 cmd.exe 的。这表示该窗口在命令运行 ???????

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档