java 调用多条cmd命令问题

xiaobaiyang_baizhi 2013-12-06 05:05:01
需求:在java进程中,能够执行按照先后次序执行多条cmd命令。
如: 第一步: 调用java的cmd命令,进入到cmd命令窗口。
第二步:系统自动在cmd命令窗口中输入命令语句。如输入dir,(dir命令字符串是通过java程序得到。
第三步:系统根据传入的参数,判断是否退出cmd命令,如果不是,继续第二步。否则退出cmd命令。

也就是模拟cmd终端,系统自动输入cmd命令。输入的命令是从数据库中动态select出来。
请高手指点。
...全文
1670 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sesame_paste 2016-08-26
  • 打赏
  • 举报
回复
关于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确实没有这样的问题。
detectivexway 2016-03-02
  • 打赏
  • 举报
回复
怎么解决的啊?求分享啊
ShawnanChen 2015-01-05
  • 打赏
  • 举报
回复
小弟搜到这里找答案,没想到楼主不厚道,不过小弟也搜到了正确的答案,是使用“&&”将命令连接起来 具体见 http://www.bicner.com/554.html
Shawon 2014-12-26
  • 打赏
  • 举报
回复
楼主不厚道.....现在问问题的人可真浮躁,总要别人给答案,自己找到答案了就不管别人了...提问的艺术
愤飞的小鸭 2014-10-09
  • 打赏
  • 举报
回复
求楼主共享
zhou2737 2014-10-08
  • 打赏
  • 举报
回复
引用 5 楼 xiaobaiyang_baizhi 的回复:
感谢各位,我已经根据网上的资料,解决了这个问题。非常感谢。如果需要,可以跟我联系。我一般都会上csdn。
怎么没有在贴上给出解决的好办法呀!!!
Fernando的十年 2014-07-18
  • 打赏
  • 举报
回复
楼主,我也想要你说的这个代码,谢谢啦。求回复
sagacityzhj 2014-04-28
  • 打赏
  • 举报
回复
既然已经寻找到了答案,就分享下啊,
xiaobaiyang_baizhi 2013-12-10
  • 打赏
  • 举报
回复
非常感谢,都给分了。谢谢,分数虽然不多,代表心意。
xiaobaiyang_baizhi 2013-12-10
  • 打赏
  • 举报
回复
感谢各位,我已经根据网上的资料,解决了这个问题。非常感谢。如果需要,可以跟我联系。我一般都会上csdn。
xiaobaiyang_baizhi 2013-12-09
  • 打赏
  • 举报
回复
谢谢!虽然没有达到我的最终目标,非常感谢您的指点。也许我在贴中没有描述清楚。我的需求: 首先在java中打开一个cmd命令窗口,第二在已经打开的cmd命令窗口中,程序自动运行上面的步骤。 请高手指点!!!
soyestrellafortuna 2013-12-09
  • 打赏
  • 举报
回复
引用 2 楼 xiaobaiyang_baizhi 的回复:
谢谢!虽然没有达到我的最终目标,非常感谢您的指点。也许我在贴中没有描述清楚。我的需求: 首先在java中打开一个cmd命令窗口,第二在已经打开的cmd命令窗口中,程序自动运行上面的步骤。 请高手指点!!!
既是模拟的话,可以试试用代码调用bat批处理文件。而批处理文件中是可以进行控制的,楼主可以参照这个思路试试的。具体是否可行,等尝试过后才得知。 比如这样的。
@echo on java -cp %1 %2
pause
zzqqian 2013-12-09
  • 打赏
  • 举报
回复
同求方案,现在做的尝试有:得到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();
soyestrellafortuna 2013-12-06
  • 打赏
  • 举报
回复
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();
		}
	}
}
从零开始讲述Java多线程的核心知识,通过板书和一步一步画图的方式,引领大家逐步去理解和掌握这些知识;并深入分析源码实现,理解背后的实现原理,知其然还要知其所以然。从多线程核心基础讲起,理解线程的风险,多种创建线程的方式;再到深入理解线程的状态;然后是线程的基本操作。系统、深入、快速上手实现多线程。 课程目标:    快速上手掌握Java多线程的经典课程,    系统、全面、深入掌握Java多线程的核心知识主讲老师:CC老师     20年Java开发和使用经验,多年的首席架构师和CTO,畅销原创书籍《研磨设计模式》的作者。         参与和领导了上百个大中型项目的设计和开发,在互联网应用系统架构、系统设计、    应用级框架和中间件开发等方面具有很多经验和领悟。    更为难得的是,入行20年,仍然奋战在技术一线,深知一线架构师需要掌握哪些技术、    掌握到什么程度、一线架构设计会遇到哪些坑、如何才能做出最合适的架构设计,经验最难得!适应人群:    想要系统、深入学习Java多线程    已有Java开发基础,想要快速掌握Java多线程    补充Java多线程知识,为进入一线大厂做准备学习方式:随到随学课程内容:第一节课:系统理解Java并发编程的知识体系    1:为什么要掌握Java并发编程    2:整个课程的目标    3:整个课程的学习内容第二节课:线程必备基础知识    1:理解线程是什么,理解进程,图示    2:理解轻量级的含义    3:理解时序调度,线程是时序调度的基本单元,图示    4:理解调度方式:抢占式,图示    5:理解我们写的程序基本都是多线程的应用,图示    6:理解并发和并行,图示    7:为什么需要线程第三节课:线程的风险    1:线程安全性问题,图示    2:线程的活跃度问题:死锁、饥饿、活锁,图示    3:线程的性能问题,这里主要是线程间切换 上下文的开销第四节课:创建线程的方式之一    1: 代码演示:实现Runnable接口的方式来创建线程    2:学习Thread类的方法和属性的应用    3:学习Thread类的源码第五节课:创建线程的方式之二    1:继承Thread的方式来创建线程    2:继续学习Thread类的源码,分析线程初始化过程    3: 代码演示:演示ThreadGroup    4: 代码演示:演示daemon线程,理解daemon线程和主线程的关系第六节课:创建线程的方式之三    1: 代码演示:匿名内部类的方式来创建线程    2:继续学习Thread类的源码,分析run方法的调用过程    3:代码演示:callable的方式来创建线程,带返回值    4: 学习FutureTask的部分源码,分析run方法到call方法的调用过程第七节课:线程状态详解    1:通过Thread源码来查看线程状态的定义    2:一步一步画图,讲述状态之间的变迁第八节课:线程的基本操作sleep 和yield    1:阅读Thread源码    2:代码演示:sleep的使用    3:代码演示:yield的使用    4:sleep和yield的对比理解第九节课:线程的基本操作join和interrupt    1:阅读Thread源码    2:代码演示:join的使用    3:代码演示:interrupt的使用这里是《Java并发编程与源码分析》的第一部分——讲述多线程核心基础实现快速上手多线程的经典之作   

50,531

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧