论坛首页 Java企业应用论坛

java调用cmd命令,如何模拟输入Y键

浏览 5104 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-10-24  
cmd
keytool -import -alias publiccert -file D:\cert.cer -keystore D:\publicCerts.store -storepass  publicstore123


下载cert.cer:http://dl.iteye.com/topics/download/fea5c7ae-79f0-3c29-ab44-a042187ede42

用java程序调用上面的命令

public static String exec(String cmd) {
  StringBuffer sb1;
  StringBuffer sb2;
  sb1 = new StringBuffer();
  sb2 = new StringBuffer();
  String temp1 = "";
  String temp2 = "";
  Runtime rt = Runtime.getRuntime();
  try {
   System.out.println(cmd);
   Process p = rt.exec(cmd);
   BufferedReader bufferedReader1 = new BufferedReader(
     new InputStreamReader(p.getInputStream(),"GBK"));
   BufferedReader bufferedReader2 = new BufferedReader(
     new InputStreamReader(p.getErrorStream()));
   while ((temp1 = bufferedReader1.readLine()) != null) {
    sb1.append(temp1);
    System.out.println(temp1);
   }
   while ((temp2 = bufferedReader2.readLine()) != null) {
    sb2.append(temp2);
    System.out.println(temp2);
   }
   p.waitFor();
   return sb1.toString();
  } catch (Exception e) {
   e.printStackTrace();
  }
  return sb1.toString();
}



程序不能执行完,在cmd窗口输入命令,需要输入“Y”才能走下去




网上一般回复

System.in.read读取输入即可,判断得到的是否为需要的内容.

代码如何实现?
   发表时间:2012-10-24  
sleep 2000 之后再打 y
0 请登录后投票
   发表时间:2012-10-25  
CS程序里一般用SendMessage来模拟按键
做一个dll,在java里jni调用可以不?
偶只知道这一种方法,java里面可以根据窗口句柄发送消息不?知道的说下
0 请登录后投票
   发表时间:2012-10-26  
获得Process的outputStream然后写入y试试...
0 请登录后投票
   发表时间:2012-10-26  
使用echo
脚本为: cmd /C echo Y | keytool .....................
0 请登录后投票
   发表时间:2012-10-27  
public static void pressKey(Robot robot, int keyvalue) {
robot.keyPress(keyvalue);
robot.keyRelease(keyvalue);
}

public static void pressKeyWithShift(Robot robot, int keyvalue) {
robot.keyPress(KeyEvent.VK_SHIFT);
robot.keyPress(keyvalue);
robot.keyRelease(keyvalue);
robot.keyRelease(KeyEvent.VK_SHIFT);
}

public static void main(String[] args) {
try {
Robot robot = new Robot();
Runtime.getRuntime().exec("notepad");
// For linux.
// Runtime.getRuntime().exec("gedit");
// 定义5秒的延迟以便你打开notepad 哈哈
// Robot 开始写
robot.delay(3000);
for (int i = 0; i < 100; i++) {
pressKeyWithShift(robot, KeyEvent.VK_H);
pressKey(robot, KeyEvent.VK_I);
pressKey(robot, KeyEvent.VK_SPACE);
// pressKeyWithShift(robot, KeyEvent.VK_H);
pressKeyWithShift(robot, KeyEvent.VK_I);
pressKey(robot, KeyEvent.VK_SPACE);
pressKey(robot, KeyEvent.VK_A);
pressKey(robot, KeyEvent.VK_M);

}
// closeApplication(robot);
// robot.keyPress(KeyEvent.VK_SPACE);
} catch (AWTException e) {
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
0 请登录后投票
   发表时间:2012-10-27  
yy629 写道
使用echo
脚本为: cmd /C echo Y | keytool .....................


命令行前加 echo Y | 即可
 echo Y | keytool -import -alias publiccert -file D:\cert.cer -keystore D:\publicCerts.store -storepass  publicstore123


0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics