Java执行批处理.bat文件(有问题???求高手帮忙解答!!!)

2024-05-05 18:38

本文主要是介绍Java执行批处理.bat文件(有问题???求高手帮忙解答!!!),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

                       Java执行批处理.bat文件(有问题???求高手帮忙解答!!!)

       在项目开发中常常都会遇到需要在代码中调用批处理bat脚本,把自己在项目中遇到过的总结下也方便自己温故而知新。

1.cmd命令如下:

     cmd  /c  dir              执行完dir后关闭命令行窗口

     cmd  /k  dir              执行完dir后 不 关闭命令行窗口

     cmd  /c  start  dir    打开新窗口执行 dir,原窗口关闭     (注:这种情况要想执行完后窗口自动关闭,必须在bat脚本最后加上exit)

     cmd  /k  start  dir     打开新窗口执行 dir,原窗口 不 关闭


2.例子(有问题!!!!求高手帮忙解答啊!!!)

package com.sheepmu;import java.io.File;
import java.io.IOException;
import java.io.InputStream;public class MyTest  
{ public static void main(String[] args){  
//		String cmd="cmd.exe  /c  start  E:\\mybat.bat";                  注意这一句!!!!!!!!String[] cmd={"cmd.exe","/c","start","E:"+File.separator+"mybat.bat"};Process ps = null;//局部变量必须初始化try {ps = Runtime.getRuntime().exec(cmd);} catch (IOException e) {e.printStackTrace();}InputStream in = ps.getInputStream();int c;try {while ((c = in.read()) != -1) {System.out.print("哈哈哈哈"); //并没有输出!!!!!!!!!!?????????   求高手解答!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!System.out.print(c); }} catch (IOException e) {e.printStackTrace();}try {in.close();} catch (IOException e) {	 e.printStackTrace();}try {ps.waitFor();} catch (InterruptedException e) {		 e.printStackTrace();}}}

常看到两种cmd语句的表示,一种是带空格的字符串,一种是字符串数组!经查询资料得知,最好还是用字符串数组的形式,因为用字符串在执行Runtime.getRuntime().exec(cmd)时可能无法执行bat语句中的重定向及管道操作符。

对bat脚本的调用已经成功了的,如下图:

         

问题问题:

为什么while循环并没有执行呢。。????输入流中没有内容????

求高手解惑呀!!!!!




这篇关于Java执行批处理.bat文件(有问题???求高手帮忙解答!!!)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/962392

相关文章

Kettle调用Java文件(Jar包)

Kettle的脚本–>Modified Java Script Value不仅可以写js代码来处理数据,也可利用这个组件调用已经写好的Jar文件。  第一步、准备java项目。  在IDE中新建java项目,并写好相应的处理逻辑。      将写好的java项目,导出成jar包,放到kettle的lib或者libext文件夹内(注意:项目内引用的jar包,若kettle中不存在,也要一并复制进去

CAS Java客户端登录相关过滤器的处理流程

首先了解一下CAS登录原理: CAS结构中一般包含CAS服务器、应用服务器、客户端三个部分。客户端向应用服务器发出请求,由于未登录,会被跳转到CAS服务器登录。登录成功后跳转回应用服务器的登录前的URL,但是CAS服务器会给URL加上一个ticket参数。应用服务器拿着ticket去CAS服务器验证,验证成功后即加入一个session表示已登录,以后就不用再次登录了。 在web.xml

BASE64编码之javascript类库BASE64.js

Base64是一种基于64个可打印字符来表示二进制数据的表示方法。由于2的6次方等于64,所以每6个比特为一个单元,对应某个可打印字符。三个字节有24个比特,对应于4个Base64单元,即3个字节需要用4个可打印字符来表示。它可用来作为电子邮件的传输编码。在Base64中的可打印字符包括字母A-Z、a-z、数字0-9 ,这样共有62个字符,此外两个可打印符号在不同的系统中而不同(本类库里面用的是

什么是TCP的粘包、拆包问题?

一、问题解析 TCP粘包和拆包问题是指在进行TCP通信时,因为TCP是面向流的,所以发送方在传输数据时可能会将多个小的数据包粘合在一起发送,而接收方则可能将这些数据包拆分成多个小的数据包进行接收,从而导致数据接收出现错误或者数据粘连的问题。 TCP粘包和拆包问题主要出现在以下两种情况下: 1发送方连续发送多个小数据包:由于TCP是基于流的协议,发送方在传输数据时可能会将多个小数据包组合

JAVA输出带BOM的UTF-8编码的文件

当从http 的response输出CSV文件的时候,设置为utf8的时候默认是不带 bom的,但是windows的Excel是使用bom来确认utf8编码的,所有需要把bom写到文件的开头。 微软在 UTF-8 中使用 BOM 是因为这样可以把 UTF-8 和 ASCII 等编码明确区分开。 否则用Excel打开CSV文件有可能是乱码的 示例代码如下: response.setContentTy

ElasticSearch java API - 聚合查询

以球员信息为例,player索引的player type包含5个字段,姓名,年龄,薪水,球队,场上位置。 index的mapping为: "mappings": {"player": {"properties": {"name": {"index": "not_analyzed","type": "string"},"age": {"type": "integer"},"salary":

elastictsearch报错java.lang.NoSuchFieldError: FAIL_ON_SYMBOL_HASH_OVERFLOW

参考文章:http://blog.csdn.net/u014231523/article/details/52816218 java.lang.NoSuchFieldError: FAIL_ON_SYMBOL_HASH_OVERFLOW 1 1 这个是jackson引用的版本不一致,可以看maven中已有的相关jackson版本,然后引用同样的版本。  我使用的版本:

ES-ElasticSearch端口和安装问题

. elasticsearch安装 官方下载地址:https://www.elastic.co/downloads/elasticsearch 解压文件 elasticsearch-2.4.0.zip 修改配置文件 1 2 3 4 elasticsearch-2.4.0  cat  config /elasticsearch .yml | grep  - v  "#"

java socket长连接服务端的实现

网络编程都是最底层都是基于socket的,鉴于客户端需要一直发送消息,使用短连接就不适合了,因为建立socket连接后发送完数据又马上断开连接。而长连接通过客户端的心跳机制一直保持连接,不管当前是否接收和发送数据。长连接服务端代码如下: package com.starit.ipran.socket;import java.io.BufferedReader;import java.io.Bu

先有JVM还是先有垃圾回收器?很多人弄混淆了

是先有垃圾回收器再有JVM呢,还是先有JVM再有垃圾回收器呢?或者是先有垃圾回收再有JVM呢?历史上还真是垃圾回收更早面世,垃圾回收最早起源于1960年诞生的LISP语言,Java只是支持垃圾回收的其中一种。下面我们就来刨析刨析JVM的垃圾回收~ 文章目录 1. 判断可回收对象1.1 引用计数法1.2 可达性分析算法 2. 垃圾回收器2.1 垃圾回收区域2.2 回收永久代2.3 垃圾回