`
wudi1906
  • 浏览: 67497 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java调用系统cmd命令的方法和注意事项

阅读更多
今天在解决java调用系统命令和aapt分析apk的时候,遇到了一个问题:
F:\aapt.exe l -a D:\tomcat6\webapps\file\apk\4003373.apk > D:\tomcat6\webapps\file\txt\4003373.txt1311071787453
这个命令在cmd命令行中执行没有问题,但是用在java的Runtime.exec方法中就不行了。

在高手的指导下才发现:原来java在调用命令行的时候,需要先加载初始化变量,就好像我们操作cmd时打开那个黑色窗口一样,所以这个语句在代码中应该体现为:

String cmd = "cmd.exe /c ";
		if(StoreContextFilter.getSystemForApk() == ISoftCatConst.WINDOWSFORAPK){
			cmd += "F:\\aapt.exe l -a " + dstPath + " > " + analysisTxt+System.currentTimeMillis();
		}else{
			cmd += "F:\\aapt.exe l -a " + dstPath + " > " + analysisTxt+System.currentTimeMillis();
		}
		System.out.println(cmd);
		
		Runtime rt = Runtime.getRuntime();  
        Process p;
		try {
			
			p = rt.exec(cmd);
	        InputStream is = p.getInputStream();
	        InputStreamReader isr = new InputStreamReader(is);  
	        BufferedReader br = new BufferedReader(isr);  
	        String line = null;  
	        while((line = br.readLine())!=null){
	        	if(p.waitFor() == 0){
	        		System.out.println("成功");  
	        	}
	        }  
		} catch (Exception e) {
			e.printStackTrace();
		}


其中的 String cmd = "cmd.exe /c "; 是关键,这就是初始化环境变量的一句,如果没有这句就会报错,这大概是windows的特性吧,希望让大家少走弯路。
分享到:
评论

相关推荐

    java中如何调cmd命令

    本文将详细介绍如何利用Java的`Runtime.getRuntime().exec()`方法来实现对CMD命令的调用,并通过具体的例子来帮助读者理解和掌握这一技术。 #### 1. 基本原理 `java.lang.Runtime`类提供了运行时环境的表示,通过...

    java调用windows命令

    以下是如何使用Java调用Windows命令行的详细步骤和注意事项: 1. **调用外部程序** - 使用`Runtime.getRuntime().exec()`方法创建一个子进程来执行指定的可执行程序。例如: ```java Process process = Runtime....

    Windows系统中Java调用cmd命令及执行exe程序的方法

    ### Java调用cmd命令 1. **使用Runtime类**: Java中可以使用`Runtime`类来获取Java程序的运行时对象。通过运行时对象,可以使用`exec()`方法来执行系统命令。 2. **命令格式**: 在Java中执行cmd命令时,常用的...

    JAVA如何调用DOS命令.doc

    总之,Java调用DOS命令主要依赖`Runtime`和`Process`类,需要注意命令格式、标准输出处理以及资源管理等问题,以确保命令的正确执行和程序的稳定运行。在实际开发中,应充分考虑各种情况,以保证代码的健壮性和跨...

    Java调用应用程序和Dos中的命令

    ### Java调用应用程序和Dos中的命令 在Java编程中,有时候我们需要执行一些操作系统级别的任务,例如启动一个外部程序、执行一些系统命令等。这通常可以通过Java的`Runtime`类实现,尤其是通过`Runtime.exec()`方法...

    java 使用dos命令详解

    #### 一、Java调用DOS命令的基础方法 Java提供了`Runtime`类以及其子类`Process`来实现对操作系统的调用。其中,`Runtime.getRuntime().exec(command)`是执行外部程序的主要方法,它可以创建一个新进程并返回一个`...

    JAVA如何调用DOS命令

    总的来说,Java调用DOS命令主要涉及`Runtime.exec()`方法的使用,以及在处理DOS命令输出和执行特定操作(如文件删除)时的注意事项。正确理解和应用这些知识可以有效地在Java程序中集成DOS命令,增强程序的功能和...

    Java程序调用MATLAB接口

    Java 程序调用 MATLAB 接口是 Java 和 MATLAB 之间的交互接口,允许 Java 程序调用 MATLAB 的函数和方法。本文将详细介绍 Java 程序调用 MATLAB 接口的注意事项、环境安装、MATLAB 如何生成 JAR 包和 MATLAB 生成的 ...

    Java 调用 Shell 命令

    这涉及到Java与操作系统层面的交互,其中关键的技术点包括:如何使用`OutputStreamWriter`来生成文本文件,以及如何通过Java调用Shell脚本来完成后续的文件处理任务。 #### 二、Java生成文本文件 为了生成文本文件...

    cmd中javac和java使用及注意事项详解

    cmd中javac和java使用及注意事项详解 一、简述 cmd中执行java命令与javac命令的区别:javac是编译命令,将java源文件编译成.class字节码文件。例如:javac hello.java将生成hello.class文件。java是运行字节码文件...

    java中两种方式调用其他.exe可执行程序

    Java 中调用其他.exe 可执行程序的注意事项 使用 Java 调用其他.exe 可执行程序时,需要注意以下几点: * 需要确保调用其他.exe 可执行程序的权限,避免出现权限不足的错误。 * 需要确保调用其他.exe 可执行程序的...

    sencha cmd 使用方法

    ### sencha cmd 使用方法 #### 一、简介与准备工作 Sencha Cmd 是一款强大的命令行工具,用于构建、编译和部署 Sencha...通过上述步骤和注意事项,您可以顺利地使用 Sencha Cmd 构建出高效且功能丰富的 Ext JS 应用。

    cmd失效解决方法

    #### 注意事项 - 在修改环境变量时,请确保不要删除其他重要的系统路径。 - 修改注册表是一项高风险的操作,请谨慎进行,并确保您对计算机有足够的了解。 - 如果您不确定如何操作,请寻求专业人士的帮助。 #### ...

    java调用Windows应用程序

    ### Java调用Windows应用程序知识点详解 #### 一、概述 在Java编程中,有时我们需要让Java程序去调用操作系统中的其他应用程序,例如打开记事本(Notepad)、启动计算器(Calculator)等。这种方式不仅可以增强...

    java 调用windows的一些可执行文件

    6. **安全注意事项**:调用外部程序时需谨慎,特别是处理用户输入时,避免命令注入攻击。不要直接拼接用户输入到命令字符串中,而是应该使用`ProcessBuilder`的`command(List)`方法,这样可以防止命令注入。 综上所...

    Java通过进程名称杀进程

    这里通过`cmd.exe`调用`wmic`命令,传入参数`process where name='java-test.exe' call terminate`来终止名为`java-test.exe`的进程。 - `IOException`处理:如果执行命令时出现错误,如无法找到命令或权限不足等...

    Java调用批处理示例

    2. **命令格式**:对于Windows系统,推荐使用`cmd /c`的方式来执行命令,这样可以确保命令被正确执行。 3. **资源释放**:在读取完进程的输出后,需要关闭`BufferedReader`和释放相关资源,以避免资源泄漏。 4. **...

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

    通常情况下,CMD(命令提示符)默认的字符编码为GBK或CP936,而Java程序默认使用的编码方式是根据操作系统设置的。当两者之间的编码不一致时,就容易出现乱码现象。例如,如果Java程序中的字符串是UTF-8编码的,而在...

Global site tag (gtag.js) - Google Analytics