如: 第一步: 调用java的cmd命令,进入到cmd命令窗口。
第二步:系统自动在cmd命令窗口中输入命令语句。如输入dir,(dir命令字符串是通过java程序得到。
第三步:系统根据传入的参数,判断是否退出cmd命令,如果不是,继续第二步。否则退出cmd命令。
也就是模拟cmd终端,系统自动输入cmd命令。输入的命令是从数据库中动态select出来。
请高手指点。
14 个解决方案
#1
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();
}
}
}
#2
谢谢!虽然没有达到我的最终目标,非常感谢您的指点。也许我在贴中没有描述清楚。我的需求:
首先在java中打开一个cmd命令窗口,第二在已经打开的cmd命令窗口中,程序自动运行上面的步骤。
请高手指点!!!
首先在java中打开一个cmd命令窗口,第二在已经打开的cmd命令窗口中,程序自动运行上面的步骤。
请高手指点!!!
#3
同求方案,现在做的尝试有:得到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();
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();
#4
既是模拟的话,可以试试用代码调用bat批处理文件。而批处理文件中是可以进行控制的,楼主可以参照这个思路试试的。具体是否可行,等尝试过后才得知。
比如这样的。
@echo on java -cp %1 %2
pause
#5
感谢各位,我已经根据网上的资料,解决了这个问题。非常感谢。如果需要,可以跟我联系。我一般都会上csdn。
#6
非常感谢,都给分了。谢谢,分数虽然不多,代表心意。
#7
既然已经寻找到了答案,就分享下啊,
#8
楼主,我也想要你说的这个代码,谢谢啦。求回复
#9
怎么没有在贴上给出解决的好办法呀!!!
#10
求楼主共享
#11
楼主不厚道.....现在问问题的人可真浮躁,总要别人给答案,自己找到答案了就不管别人了...提问的艺术
#12
小弟搜到这里找答案,没想到楼主不厚道,不过小弟也搜到了正确的答案,是使用“&&”将命令连接起来 具体见
http://www.bicner.com/554.html
http://www.bicner.com/554.html
#13
怎么解决的啊?求分享啊
#14
关于java调用cmd就不再细说了,网上内容很多,可自行搜索查看。
先说一下本次的需求:
首现要切换目录,然后执行某个命令
这里就以切换到 D:\img 目录下 然后执行dir为例说明
聪明的你肯定知道我们可以使用 && 来连接两条命令,那么就会是这样的
Runtime rt = Runtime.getRuntime();
String cmd = “cmd /c cd D:\\img && dir /b”;//这一句真的对吗?
Process pr = rt.exec(cmd);
其实自己打开cmd命令试一下就会发现,这样是不行的。
正确的应该是这样
String cmd = “cmd /c D: && cd D:\\img && dir /b”;
不信可以自己打开cmd执行一下看看了。
至于这是为什么那你去问微软吧,我也不知道为什么还要先切换一下磁盘,或许是盘符管理方式本身的问题也未可知,Linux确实没有这样的问题。
先说一下本次的需求:
首现要切换目录,然后执行某个命令
这里就以切换到 D:\img 目录下 然后执行dir为例说明
聪明的你肯定知道我们可以使用 && 来连接两条命令,那么就会是这样的
Runtime rt = Runtime.getRuntime();
String cmd = “cmd /c cd D:\\img && dir /b”;//这一句真的对吗?
Process pr = rt.exec(cmd);
其实自己打开cmd命令试一下就会发现,这样是不行的。
正确的应该是这样
String cmd = “cmd /c D: && cd D:\\img && dir /b”;
不信可以自己打开cmd执行一下看看了。
至于这是为什么那你去问微软吧,我也不知道为什么还要先切换一下磁盘,或许是盘符管理方式本身的问题也未可知,Linux确实没有这样的问题。
#1
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();
}
}
}
#2
谢谢!虽然没有达到我的最终目标,非常感谢您的指点。也许我在贴中没有描述清楚。我的需求:
首先在java中打开一个cmd命令窗口,第二在已经打开的cmd命令窗口中,程序自动运行上面的步骤。
请高手指点!!!
首先在java中打开一个cmd命令窗口,第二在已经打开的cmd命令窗口中,程序自动运行上面的步骤。
请高手指点!!!
#3
同求方案,现在做的尝试有:得到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();
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();
#4
既是模拟的话,可以试试用代码调用bat批处理文件。而批处理文件中是可以进行控制的,楼主可以参照这个思路试试的。具体是否可行,等尝试过后才得知。
比如这样的。
@echo on java -cp %1 %2
pause
#5
感谢各位,我已经根据网上的资料,解决了这个问题。非常感谢。如果需要,可以跟我联系。我一般都会上csdn。
#6
非常感谢,都给分了。谢谢,分数虽然不多,代表心意。
#7
既然已经寻找到了答案,就分享下啊,
#8
楼主,我也想要你说的这个代码,谢谢啦。求回复
#9
怎么没有在贴上给出解决的好办法呀!!!
#10
求楼主共享
#11
楼主不厚道.....现在问问题的人可真浮躁,总要别人给答案,自己找到答案了就不管别人了...提问的艺术
#12
小弟搜到这里找答案,没想到楼主不厚道,不过小弟也搜到了正确的答案,是使用“&&”将命令连接起来 具体见
http://www.bicner.com/554.html
http://www.bicner.com/554.html
#13
怎么解决的啊?求分享啊
#14
关于java调用cmd就不再细说了,网上内容很多,可自行搜索查看。
先说一下本次的需求:
首现要切换目录,然后执行某个命令
这里就以切换到 D:\img 目录下 然后执行dir为例说明
聪明的你肯定知道我们可以使用 && 来连接两条命令,那么就会是这样的
Runtime rt = Runtime.getRuntime();
String cmd = “cmd /c cd D:\\img && dir /b”;//这一句真的对吗?
Process pr = rt.exec(cmd);
其实自己打开cmd命令试一下就会发现,这样是不行的。
正确的应该是这样
String cmd = “cmd /c D: && cd D:\\img && dir /b”;
不信可以自己打开cmd执行一下看看了。
至于这是为什么那你去问微软吧,我也不知道为什么还要先切换一下磁盘,或许是盘符管理方式本身的问题也未可知,Linux确实没有这样的问题。
先说一下本次的需求:
首现要切换目录,然后执行某个命令
这里就以切换到 D:\img 目录下 然后执行dir为例说明
聪明的你肯定知道我们可以使用 && 来连接两条命令,那么就会是这样的
Runtime rt = Runtime.getRuntime();
String cmd = “cmd /c cd D:\\img && dir /b”;//这一句真的对吗?
Process pr = rt.exec(cmd);
其实自己打开cmd命令试一下就会发现,这样是不行的。
正确的应该是这样
String cmd = “cmd /c D: && cd D:\\img && dir /b”;
不信可以自己打开cmd执行一下看看了。
至于这是为什么那你去问微软吧,我也不知道为什么还要先切换一下磁盘,或许是盘符管理方式本身的问题也未可知,Linux确实没有这样的问题。