package com.huaweisymantec.core.utils;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* 命令行命令执行工具类
*
* @author s00108907
*
*/
public final class CommandUtils {
private static final Logger LOG = LoggerFactory.getLogger(CommandUtils.class);
/**
* 调用系统的DOS命令方法执行需要的命令
*
* @param command 要执行的命令
* @return 执行结果
* @throws IOException
*/
public static String exec(String command) throws IOException {
return exec(null, command);
}
/**
* 调用系统的DOS命令方法执行需要的命令
*
* @param directory 此进程的工作目录
* @param command 要执行的命令
* @return 执行结果
* @throws IOException
*/
public static String exec(String directory, String command) throws IOException {
InputStream in = null;
Reader reader = null;
BufferedReader br = null;
try {
ProcessBuilder pb;
if (System.getProperty("os.name").indexOf("Windows") == -1) {
pb = new ProcessBuilder("/bin/sh", "-c", command);
} else {
pb = new ProcessBuilder("cmd", "/c", command);
}
if (StringUtils.isNotBlank(directory)) {
pb.directory(new File(directory));
}
// merge the error output with the standard output
pb.redirectErrorStream(true);
LOG.debug("Now exceuting:{}", command);
Process p = pb.start();
in = p.getInputStream();
reader = new InputStreamReader(in, "gb2312");
br = new BufferedReader(reader);
StringBuffer lines = new StringBuffer();
String line = null;
while ((line = br.readLine()) != null) {
lines.append(line).append("\r\n");
}
LOG.debug("Exceuting result:{}", lines.toString());
return lines.toString();
} finally {
if (reader != null) {
reader.close();
}
if (br != null) {
br.close();
}
if (in != null) {
in.close();
}
}
}
}
分享到:
相关推荐
在C++编程环境中,有时我们需要调用操作系统的命令行接口,比如DOS命令,来执行系统级别的任务,如创建文件、删除目录、运行外部程序等。这个过程通常通过使用操作系统提供的API函数或者库来实现。本文将深入探讨...
本资源“DOS批处理高级教程精选DOS命令使用方法DOS命令详解共66页.pdf.zip”显然是一个关于DOS批处理的详细教程,包含66页的内容,旨在深入讲解DOS命令的使用方法和批处理技术。 DOS,全称Disk Operating System,...
C#提供了多种调用DOS命令的方式,包括直接调用命令行程序、通过`cmd.exe`执行多条命令以及使用Win32 API进行底层控制。每种方法都有其适用场景,开发者应根据具体需求选择最适合的方案。掌握这些技巧,不仅能够增强...
综上所述,"在Delphi中运行DOS命令"涉及到了Delphi程序与操作系统交互的基本技巧,包括使用API函数、内置函数、自定义组件,以及处理相关文件资源。在实际开发中,需要注意安全性和稳定性,同时利用配置文件和日志...
标题"DOS命令_CallingDOScomman_labview调用Dos_labview_sixzk3_"指出,这个话题主要关注如何在LabVIEW中使用DOS命令。在Windows操作系统中,DOS命令(也称为命令行接口或命令提示符命令)是一种与操作系统交互的...
在IT行业中,有时我们需要在Windows环境下利用编程语言如Visual C++(VC)来调用操作系统提供的功能,例如执行DOS命令。这篇博文“vc调用dos命令总结”为我们揭示了如何在VC程序中通过系统调用来执行DOS命令。这个...
除了直接执行命令,还可以利用批处理文件(.bat或.cmd文件),将多个命令写入文件,然后通过Process类调用该文件执行一系列命令。 最后,要注意安全性问题。由于这种方式可以执行任意系统命令,所以必须谨慎处理,...
在IT领域,尤其是在软件开发中,有时候我们需要在Visual Studio 2005(VS2005)这样的集成开发环境中(IDE)执行DOS命令,以便进行自动化构建、测试或其他系统级别的操作。"VS2005执行DOS命令"这个主题主要涉及到...
在QT5中,我们可以通过QProcess类来调用外部的系统命令,比如DOS命令,实现与操作系统进行交互。这个小例子展示了如何在QT5环境中使用QProcess来执行像`ipconfig`和`ping`这样的命令,不仅限于Windows,也适用于...
Java调用DOS命令是指在Java程序中执行操作系统级别的命令,比如Windows下的CMD命令或Linux下的Shell命令。这种功能在很多场景下都很有用,比如自动化脚本、文件操作、系统管理等。Java提供了Runtime类和...
我们可以通过getRuntime()方法获取到Runtime实例,然后调用exec()方法执行命令。例如,以下代码展示了如何使用Runtime类执行"mkdir"命令创建一个新的目录: ```java Runtime runtime = Runtime.getRuntime(); try {...
当我们需要在C++程序中执行DOS命令并获取返回信息时,通常会使用操作系统提供的API接口或者特定库函数来实现这一功能。本篇文章将详细讲解如何在Visual C++中调用DOS命令并获取屏幕上的文字。 首先,我们需要了解的...
在VC++(Visual C++)编程环境下,开发者经常会遇到需要执行DOS命令的情况,例如获取系统信息、文件管理等。本文将详细解析如何在VC环境中有效地调用DOS命令,并探讨两种常用方法:`system`函数与`WinExec`函数,...
在Java编程中,有时我们需要执行操作系统级别的任务,如运行DOS命令。这通常涉及到使用`Runtime`类的`exec()`方法。`Runtime.getRuntime().exec()`允许我们创建一个子进程来执行指定的命令或可执行程序。这个过程...
在编程领域,有时候我们需要在应用程序中执行操作系统级别的任务,例如执行DOS命令。这个主题主要涉及到进程控制和系统调用,这些是操作系统提供给应用程序与系统交互的接口。本示例将详细介绍如何在Windows环境下...
DELPHI在Windows环境下执行DOS命令并获取返回结果是一个常见的需求,这通常涉及到系统交互和进程控制。在Delphi编程中,我们可以使用内置的`ShellExecute`函数或者通过创建进程对象来实现这一功能。本项目提供的代码...
- Dos32.pas很可能是包含主要功能的源代码文件,"32"可能暗示它是为32位操作系统设计的,或者与DOS命令执行有关的32位API调用有关。在这个文件中,可能会有函数或过程用于启动DOS命令,捕获输出,以及与用户界面交互...
首先,执行DOS命令的核心在于使用`System.Diagnostics.Process`类。这个类提供了启动外部进程、与之通信以及控制其生命周期的能力。在C#中,我们可以通过以下方式创建并执行一个DOS命令: ```csharp using System....
如果遇到删除ZIP文件失败的问题,可以使用DOS命令`del`进行硬删除,但需要注意的是,直接调用`"del f:\\aaa.doc"`可能不会成功,应使用`"cmd /c del f:\\aaa.doc"`确保命令被正确解析和执行。 总之,Java调用DOS...
在VC(Visual C++)开发环境中,我们有时需要执行DOS命令并获取其返回值,以便在应用程序中处理这些信息。这个例子展示了如何通过VC来实现这一功能,这对于系统管理和自动化任务尤其有用。DOS命令行是Windows操作...