需求:在java进程中,能够执行按照先后次序执行多条cmd命令。
如: 第一步: 调用java的cmd命令,进入到cmd命令窗口。
第二步:系统自动在cmd命令窗口中输入命令语句。如输入dir,(dir命令字符串是通过java程序得到。
第三步:系统根据传入的参数,判断是否退出cmd命令,如果不是,继续第二步。否则退出cmd命令。
也就是模拟cmd终端,系统自动输入cmd命令。输入的命令是从数据库中动态select出来。
请高手指点。
------解决方案--------------------
import java.io.InputStream;
public class CMDTest {
public static void main(String[] args) throws Exception {
CMDTest cmd = new CMDTest();
cmd.excute("dir");
}
private void excute(String action) {
Runtime run = Runtime.getRuntime();
try {
Process process = run.exec("cmd.exe /k start " + action);
InputStream in = process.getInputStream();
while (in.read() != -1) {
System.out.println(in.read());
}
in.close();
process.waitFor();
} catch (Exception e) {
e.printStackTrace();
}
}
}
------解决方案--------------------
同求方案,现在做的尝试有:得到outputStream,就可以输入你想要的命令msg,但是不是在打开的cmd窗口中,是后台运行的
BufferedWriter bWriter = null;
OutputStreamWriter sWriter = null;
sWriter = new OutputStreamWriter(p.getOutputStream(),encoding);
bWriter = new BufferedWriter(sWriter);
String msg = text+STR_ENTER;
bWriter.write(msg);
bWriter.flush();
bWriter.close();
------解决方案--------------------
既是模拟的话,可以试试用代码调用bat批处理文件。而批处理文件中是可以进行控制的,楼主可以参照这个思路试试的。具体是否可行,等尝试过后才得知。
比如这样的。
@echo on java -cp %1 %2
pause