锁定老帖子 主题:写了个java版的cmd
精华帖 (0) :: 良好帖 (0) :: 新手帖 (16) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-01-02
最后修改:2010-01-02
代码如下: JavaCmd.java package com.cmd; import java.io.*; /** * 模拟cmd的类 * @author lupin * @version 1.0 2009-12-25 */ public class JavaCmd { public static Process execCmd(String command){ //执行cmd命令的方法 JavaCmd.changDir(command); Runtime run = Runtime.getRuntime(); Process pro =null; try { pro = run.exec("cmd /c" + command,null,new File(System.getProperty("user.dir"))); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return pro; } public static void showResult(Process pro){ //回显命令执行结果的方法 InputStream is = pro.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String s = null; try { s = br.readLine(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } while(s != null){ System.out.println(s); try { s = br.readLine(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public static void showWindow(){ //显示cmd窗口 System.out.println("Microsoft Windows XP [版本 5.1.2600]"); System.out.println("<c> 版权所有 1985-2001 Microsoft Corp."); String strHome = System.getProperty("user.home"); System.setProperty("user.dir", strHome); String strDir = System.getProperty("user.dir"); System.out.print(strDir + ">"); } public static void changDir(String str){ //转换目录的方法 if(str.indexOf("dir") < 0 && str.endsWith(":")){ System.setProperty("user.dir", str + "\\"); } else if(str.indexOf("cd") >= 0 && str.indexOf(":") >= 0){ int i = 3; String str1 = str.substring(i); System.setProperty("user.dir",str1); } else if(str.indexOf("cd") >= 0 && str.indexOf(":") < 0){ String dir = System.getProperty("user.dir"); String temp = dir.substring(0,2); String tempStr = str.substring(3); System.setProperty("user.dir", temp + tempStr); } else if(str.indexOf("cd /") == 0){ String dir = System.getProperty("user.dir"); String dirTmp = dir.substring(0, 3); System.setProperty("user.dir", dirTmp); } else if(str.indexOf("cd..") == 0){ } } } StartCmd.java package com; import java.util.Scanner; import com.cmd.*; public class StartCmd { /** * @param args */ public static void main(String[] args) { Scanner input = new Scanner(System.in); JavaCmd.showWindow(); while(true){ String command =input.nextLine(); Process pro = JavaCmd.execCmd(command); JavaCmd.showResult(pro); String strDir = System.getProperty("user.dir"); System.out.print(strDir + ">"); } } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-01-03
System.out.println("Microsoft Windows XP [版本 5.1.2600]"); System.out.println("<c> 版权所有 1985-2001 Microsoft Corp."); 我晕,这两句直接是syso的啊。。我以为是从系统获得的。。。 |
|
返回顶楼 | |
发表时间:2010-01-03
呵呵,Java中应该又获取系统信息的函数的,不过楼主的只能在windows下运行,linux下就美发完了 !!
|
|
返回顶楼 | |
发表时间:2010-01-03
不懂楼主什么意思,是不是第一次学会怎么调用run.exec函数启动一个进程感觉兴奋 就来 展示下
感情 你把linux的一些日常命令用java封装下 移到wendows下 这样才能锻炼下能力 |
|
返回顶楼 | |
发表时间:2010-01-03
liuhello 写道 不懂楼主什么意思,是不是第一次学会怎么调用run.exec函数启动一个进程感觉兴奋 就来 展示下
感情 你把linux的一些日常命令用java封装下 移到wendows下 这样才能锻炼下能力 觉得好玩所以试着写了一下,用java封装linux命令要怎么实现呢? |
|
返回顶楼 | |
发表时间:2010-01-03
wujiazhao88 写道 我晕,这两句直接是syso的啊。。我以为是从系统获得的。。。 开始是从系统获得的,可是有问题,总是不能把信息显示在正确的位置,就直接输出了。 |
|
返回顶楼 | |
发表时间:2010-01-04
lupin啊兰 写道 liuhello 写道 不懂楼主什么意思,是不是第一次学会怎么调用run.exec函数启动一个进程感觉兴奋 就来 展示下
感情 你把linux的一些日常命令用java封装下 移到wendows下 这样才能锻炼下能力 觉得好玩所以试着写了一下,用java封装linux命令要怎么实现呢? 比如我上学时写过ls.java java ls c\user\tools java ls home\mm\tools 可以把 对应的目录内容打出来 cp.java 可以把对应的文件拷贝至对应目录 |
|
返回顶楼 | |
发表时间:2010-01-04
liuhello 写道 不懂楼主什么意思,是不是第一次学会怎么调用run.exec函数启动一个进程感觉兴奋 就来 展示下
感情 你把linux的一些日常命令用java封装下 移到wendows下 这样才能锻炼下能力 貌似windows 7下面已经实现shell的控制台。 |
|
返回顶楼 | |
发表时间:2010-01-04
在lunix下需要TELNET 过去,你还得熟悉TELNET
|
|
返回顶楼 | |
发表时间:2010-01-04
这个只是调用系统,建议用javaAPI直接写,好的多,而且跨平台,
java对文件目录的支持还是可以的,写个真正版的cmd也比较容易,exec()那是外挂呀! |
|
返回顶楼 | |