`
lupin啊兰
  • 浏览: 1700 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
最近访客 更多访客>>
社区版块
存档分类
最新评论

写了个java版的cmd

阅读更多
今天试着写了个java版的cmd,其实核心代码就是用RunTime类的exec()方法,不过觉得目录转换的模拟还是很有趣,“cd..”命令我还没写好.



代码如下:


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 + ">");
        }
	}

}



  • 大小: 47.1 KB
分享到:
评论
15 楼 yidao620c 2010-01-04  
居然用硬编码。。。
那换个系统就到不到这种效果了。
14 楼 njaueducn 2010-01-04  
uniquejava 写道
我写了个jsp+ajax版的
windows/linux都能用,
支持的命令多多了,...
还有tab键自动补全路径
vi也实现了,就是读写文件嘛.
还有输入@符号,自动弹出文件对话框让选择文件进行上传(上传到当前命令提示符所在目录下)
纯jsp编写,随便往WebRoot下一放.易部署易使用.

偶也写了一个,还支持telnet等网络命令
13 楼 guooscar 2010-01-04  
lupin啊兰 写道
uniquejava 写道
我写了个jsp+ajax版的
windows/linux都能用,
支持的命令多多了,...
还有tab键自动补全路径
vi也实现了,就是读写文件嘛.
还有输入@符号,自动弹出文件对话框让选择文件进行上传(上传到当前命令提示符所在目录下)
纯jsp编写,随便往WebRoot下一放.易部署易使用.


那不就是黑客的jsp脚本木马了吗?

那可不就是么
12 楼 lupin啊兰 2010-01-04  
uniquejava 写道
我写了个jsp+ajax版的
windows/linux都能用,
支持的命令多多了,...
还有tab键自动补全路径
vi也实现了,就是读写文件嘛.
还有输入@符号,自动弹出文件对话框让选择文件进行上传(上传到当前命令提示符所在目录下)
纯jsp编写,随便往WebRoot下一放.易部署易使用.


那不就是黑客的jsp脚本木马了吗?
11 楼 uniquejava 2010-01-04  
我写了个jsp+ajax版的
windows/linux都能用,
支持的命令多多了,...
还有tab键自动补全路径
vi也实现了,就是读写文件嘛.
还有输入@符号,自动弹出文件对话框让选择文件进行上传(上传到当前命令提示符所在目录下)
纯jsp编写,随便往WebRoot下一放.易部署易使用.
10 楼 IcedCoffee 2010-01-04  
这个只是调用系统,建议用javaAPI直接写,好的多,而且跨平台,
java对文件目录的支持还是可以的,写个真正版的cmd也比较容易,exec()那是外挂呀!
9 楼 suciudeman 2010-01-04  
在lunix下需要TELNET 过去,你还得熟悉TELNET
8 楼 apple0668 2010-01-04  
liuhello 写道
不懂楼主什么意思,是不是第一次学会怎么调用run.exec函数启动一个进程感觉兴奋 就来 展示下


感情 你把linux的一些日常命令用java封装下 移到wendows下 这样才能锻炼下能力 



貌似windows 7下面已经实现shell的控制台。
7 楼 抛出异常的爱 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
可以把对应的文件拷贝至对应目录
6 楼 lupin啊兰 2010-01-03  
wujiazhao88 写道

我晕,这两句直接是syso的啊。。我以为是从系统获得的。。。


开始是从系统获得的,可是有问题,总是不能把信息显示在正确的位置,就直接输出了。

5 楼 lupin啊兰 2010-01-03  
liuhello 写道
不懂楼主什么意思,是不是第一次学会怎么调用run.exec函数启动一个进程感觉兴奋 就来 展示下


感情 你把linux的一些日常命令用java封装下 移到wendows下 这样才能锻炼下能力 


觉得好玩所以试着写了一下,用java封装linux命令要怎么实现呢?
4 楼 liuhello 2010-01-03  
不懂楼主什么意思,是不是第一次学会怎么调用run.exec函数启动一个进程感觉兴奋 就来 展示下


感情 你把linux的一些日常命令用java封装下 移到wendows下 这样才能锻炼下能力 
3 楼 及缘南烗 2010-01-03  
呵呵,Java中应该又获取系统信息的函数的,不过楼主的只能在windows下运行,linux下就美发完了 !!
2 楼 njyu 2010-01-03  
呵呵 娱乐一下!
1 楼 wujiazhao88 2010-01-03  
  System.out.println("Microsoft Windows XP [版本 5.1.2600]");  
  System.out.println("<c> 版权所有 1985-2001 Microsoft  Corp.");

我晕,这两句直接是syso的啊。。我以为是从系统获得的。。。

相关推荐

    java调用cmd创建定时任务

    java语言通过cmd命令在远程电脑上创建定时任务,从而达到控制远程开启或者关闭自己想要处理的应用程序,而不用亲临。很简单,由于win10系统的安全性,使用邮箱在线注册过的win10估计是不行的,自己试吧。

    java 调用 windows cmd 命令

    例如,要运行一个CMD命令,你可以这样写: ```java Runtime.getRuntime().exec("cmd /c dir"); ``` 这里的`cmd /c`是用来执行命令并关闭CMD窗口的。 2. **ProcessBuilder类**:这个类在Java 5中引入,提供了更...

    java socket线程cmd命令执行结合,可仿木马程序

    2、把解压后的5个java类复制进去,修改包路径 3、先运行服务器类MJServer.java,再运行客户端类MyClient.java 4、提示连接成功后,在服务类的控制台输入cmd命令,例如ping 127.0.0.1 5、控制台可以看到客户端返回的...

    用java编写cmd命令行

    通过在java程序中调用cmd ,来查找在doc的运行,来查找类似的cmd命令

    纯JAVA写的银行系统,用CMD执行

    【标题】"纯JAVA写的银行系统,用CMD执行"揭示了一个基于Java编程语言开发的银行管理系统,该系统设计用于在命令行环境下运行。这个系统涵盖了银行日常操作中的多个功能,如用户登录、账户余额查询、存款与取款、...

    java javascript 调用命令行 cmd

    例如,如果你想要运行`dir`命令,可以这样写: ```java String command = "cmd /c dir"; // Windows Process process = Runtime.getRuntime().exec(command); ``` 在这里,`/c` 参数告诉CMD执行完命令后关闭...

    cmd,java基础入门必备啊啊啊

    cmd,java基础篇 学习: (1)windows+r弹出窗口输入cmd到DOS环境 (2)cd.. //退到上一层的文件夹,若想再退一层再输入一次cd.. 最多退回到盘符,若到这里再输入一次cd..不会有任何反应 cd\ //直接跳到盘符,...

    cmd命令加密工具

    在IT行业中,命令行工具是系统管理员和开发者的重要助手,其中CMD(命令提示符)是Windows操作系统中的一个基本工具。CMD命令加密工具是专门用于在命令行环境下对数据进行加密的实用程序,它允许用户安全地存储和...

    开发中遇到的问题+Java+CMD+接口乱码解决方法

    然而,在CMD环境下运行Java程序时可能会遇到一个令人头疼的问题——接口返回结果出现乱码。这种现象不仅影响了程序的正常运行,还可能导致数据处理错误,增加调试难度。 #### 二、原因分析 在深入探讨解决方案之前...

    Java执行cmd命令两种实现方法解析

    Java中执行cmd命令的最常见方法是使用Runtime.getRuntime().exec(command)方法,该方法可以执行系统命令,并返回一个Process对象,该对象可以用于获取命令的执行结果。下面是一个示例代码: ```java public static ...

    Java编写的dos命令执行器

    用Java编写的一个小工具,可以执行cmd命令,并将执行结果打印出来

    CMD调用并读取返回信息

    首先,我们可以使用多种编程语言来实现CMD调用,例如Python、Java、C#、VBScript等。这里以Python为例,讲解如何进行CMD调用。在Python中,我们可以使用`subprocess`模块来创建新的进程,执行命令并获取其输出。 1....

    简单的java贷款支付程序(cmd)

    Java贷款支付程序是一种基于命令行(cmd)的实用工具,用于帮助用户计算贷款的月度还款额。在Java编程环境中,此类程序通常涉及到基础的金融计算和循环结构,这些都是计算机科学与金融领域相结合的重要概念。 首先...

    java读写文件(txt)

    java中通过cmd指令输入读写文件

    仿照windows下的CMD.EXE程序

    【描述】:“用vb写的,仿照windows下的cmd程序,有兴趣的可以研究下” 这个描述暗示了一个学习和探索的过程。开发者使用VB创建了一个应用程序,该应用模仿了CMD.EXE的部分或全部功能。这可能包括命令行输入、命令...

    java写代码辅助工具

    此工具通过预设的批处理脚本(如`java调试帮助程序.cmd`)简化了这些步骤,初学者无需记忆繁琐的命令,只需点击即可执行相应操作,极大地降低了入门难度。 2. **代码管理**:对于初学者来说,保持代码的整洁和组织...

    Java编写的五子棋(命令行下的)

    用java写的命令行下的五子棋代码和一个清屏的动态链接库,在五子棋代码里通过jni调用来实现清屏。 五子棋算法是参考的这个博客http://blog.163.com/liuliang_nice/blog/static/10274620200741201527290/ 文章提到的...

    Java实验报告Java写的计算器

    这份实验报告由学生何秀聘完成,旨在通过编写一个Win简单的计算器程序,达到熟悉Java运行环境和掌握Java语言运用的目的。实验环境是基于jdk1.6.0和eclipse3.2开发工具。 【实验内容与要求】 实验的主要内容是利用...

    CMD命令速查手册.docx

    CMD作为Windows操作系统的一个重要组成部分,提供了丰富的命令行工具,可以帮助用户高效地完成一系列任务,如文件管理、系统维护等。 #### 二、核心命令详解 ##### 1. **ASSOC** - **功能**:显示或修改文件扩展...

Global site tag (gtag.js) - Google Analytics