`
jsczxy2
  • 浏览: 1269703 次
  • 性别: Icon_minigender_1
  • 来自: 常州
文章分类
社区版块
存档分类
最新评论

java调用windows命令并打印命令行输出

    博客分类:
  • java
阅读更多

先来个主程序,这个程序用来读日志并且拷贝的,公司用的程序,不想改了,原封贴上:

package com.test;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;


public class TestF {
	public static void main(String[] args) {
		List list = readLog("d://Nopublic_log_2010-11-12_Y.txt");
		//checkFiles("f:\\user\\"+list.get(0).toString(),"J:\\178_f\\"+list.get(0).toString());
		for(int i =0;i<list.size();i++){
			System.out.println(list.get(i).toString());
			checkFiles("f:\\user\\"+list.get(i).toString(),"J:\\178_f\\"+list.get(i).toString());
		}
		System.out.println("over my test");
	}

	private static void checkFiles(String upload_Dir, String download_Dir) {
		try {
			File fold_download_Dir = new File(download_Dir);
			if(!fold_download_Dir.exists()){
				fold_download_Dir.mkdirs();
			}
			Runtime rt = Runtime.getRuntime();
			Process proc = rt.exec("xcopy /e "+upload_Dir+" "+download_Dir);
			StreamGobbler errorGobbler = new StreamGobbler(proc.getErrorStream(), "ERROR"); 
			StreamGobbler outputGobbler = new
			StreamGobbler(proc.getInputStream(), "OUTPUT");

			errorGobbler.start();
			outputGobbler.start();
			int exitVal = proc.waitFor();
			System.out.println("ExitValue: " + exitVal); 
			
		} catch (IOException e) {
			e.printStackTrace();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}


	private static List<String> readLog(String logpath) {
		InputStreamReader read = null;
		List<String> strs = new ArrayList<String>();
		File log = new File(logpath);
		try {
			read = new InputStreamReader(new FileInputStream(log));
			BufferedReader br = new BufferedReader(read);
			String data = null;
			while ((data = br.readLine()) != null) {
				strs.add(data.trim());
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			return strs;
		}
	}
}

 接下来是StreamGobbler.java

package com.test;

import java.util.*;
import java.io.*;

public class StreamGobbler extends Thread {
	InputStream is;

	String type;

	public StreamGobbler(InputStream is, String type) {
		this.is = is;
		this.type = type;
	}

	public void run() {
		try {
			InputStreamReader isr = new InputStreamReader(is);
			BufferedReader br = new BufferedReader(isr);
			String line = null;
			while ((line = br.readLine()) != null)
				System.out.println(type + ">" + line);
		} catch (IOException ioe) {
			ioe.printStackTrace();
		}
	}
}
 
分享到:
评论
1 楼 zhukewen_java 2012-12-09  
Good!

相关推荐

    java javascript 调用命令行 cmd

    这将在Windows上运行`dir`命令,并打印其输出和错误信息。 2. **使用child_process.spawn()** 如果需要更精细的控制,比如处理输入输出流,可以使用`spawn`方法。例如: ```javascript const { spawn } = ...

    java调用命令行启动tomcat

    ### Java调用命令行启动Tomcat #### 一、引言 在开发环境中,我们经常需要启动Tomcat服务器来运行Java Web应用。通常情况下,我们会通过双击`startup.bat`或`catalina.sh`脚本来启动Tomcat。然而,在某些特定场景...

    Java cmd命令行模拟工具

    在上述代码中,我们首先执行了"dir"命令(在Windows环境下),然后通过`BufferedReader`读取并打印出命令的输出。`process.waitFor()`方法会阻塞直到命令执行完毕。 对于更复杂的命令,如需要参数、环境变量或者...

    java调用shell(包含有参数的调用)

    在上述代码中,异常处理是通过`try-catch`块来实现的,当发生异常时,将会输出错误信息,并打印出异常的堆栈跟踪信息。 总之,Java调用Shell脚本是一个有效的方法来在Java程序中实现复杂的Linux环境下的操作,这种...

    java创建进程,及根据命令行、pid删除进程

    然后,我们读取并打印出进程的输出,等待进程结束,并获取它的退出码。 接下来,我们讨论如何删除进程。在Java中,直接删除进程并不像创建那样简单,因为Java的标准库并不提供直接的API来终止或杀死进程。通常,...

    JAVA执行DOS命令分析

    一种是在命令行中包含命令解释器,例如在Windows NT上使用`"cmd.exe /c dir"`,而在Windows 95/98上使用`"command.exe /c dir"`。参数`/c`告诉命令解释器在执行命令后关闭。另一种方法是将命令写入批处理文件,然后...

    Java如何调用可执行文件和批处理命令.doc

    Java调用可执行文件和批处理命令是Java开发中常见的需求,特别是在与系统交互或集成外部工具时。本文将详细讲解两种主要的方法:调用exe文件和通过转换批处理文件来间接调用。 首先,调用Windows下的可执行文件...

    Java实现PDF格式文件打印必备软件.zip

    在Java环境中,我们可以利用GSview的API(如果有的话)或者通过调用系统命令来启动GSview并打印PDF文件。例如,通过`Runtime.getRuntime().exec()`方法执行GSview的命令行参数,将PDF文件路径和打印指令传递给它。 ...

    解决java执行cmd命令调用ffmpeg报错Concat error - No such filter &#39;[0,0]&#39;问题

    3. **创建批处理文件**:如果Java代码在不同操作系统之间运行,可以创建一个批处理文件(`.bat` for Windows, `.sh` for Linux),然后在Java中调用这个批处理文件,从而简化命令行参数的处理。 4. **使用ffmpeg的...

    java执行bat命令碰到的阻塞问题的解决方法

    在`StreamGobbler.run()`方法中,创建了`InputStreamReader`和`BufferedReader`实例来读取输入流,然后逐行读取并打印或写入到指定的输出流。这样,bat文件的输出就会被实时处理,避免了缓冲区溢出导致的阻塞问题。 ...

    java调用

    // 主线程负责读取adder.exe的标准输出并打印 BufferedReader stdout = new BufferedReader(new InputStreamReader(proc.getInputStream())); for (String line; null != (line = stdout.readLine()); ) { ...

    java 调用 mplayer

    本文将深入探讨如何使用Java调用MPlayer,一个强大的跨平台开源媒体播放器,来实现这一目标。MPlayer支持多种音视频格式,能够很好地适应各种需求。 首先,了解MPlayer。MPlayer是一款高度可配置的多媒体播放器,它...

    Java零基础 - ipconfig命令.md

    - **获取网络配置信息**:如何通过Java代码调用`ipconfig`命令并解析其输出结果。 - **代码示例**:提供完整的Java代码示例,包括创建项目、编写代码、运行程序及查看结果等过程。 #### 学到什么 通过阅读本文档,...

    print2flash.exejava例子

    `print2flash.exe`是一个命令行工具,它可以捕获打印输出并将其转换为可嵌入到网页中的SWF文件。 `print2flash.exe`通常与Java进行集成,通过调用系统命令或者使用Java的Runtime类来执行外部程序。在提供的描述中,...

    java代码-Java启动命令行程序并进行输入输出

    `是Windows系统的命令,用于在命令行打印“Hello, World!”。在Unix或Linux系统中,你可能需要使用`/bin/sh -c "echo Hello, World!"`。 2. `ProcessBuilder` `ProcessBuilder`类提供了一个更灵活的方式来执行外部...

    windows控制台常用命令解释

    25. DOSKEY:编辑命令行、调用 Windows 命令并创建宏。 例如,使用 DOSKEY /INSERT 可以编辑命令行。 26. DRIVERQUERY:显示当前设备驱动程序状态和属性。 例如,使用 DRIVERQUERY 可以显示当前设备驱动程序的...

    ZPL基础及与Java系统的集成使用

    【ZPL基础及与Java系统的集成使用】 ZPL(Zebra Programming Language)是Zebra Technologies公司...了解ZPL的基础和Java调用机制,能够帮助开发者实现高效、准确的标签打印功能,提高物流、仓储等领域的自动化水平。

    Java模仿DOS界面(cmd程序) (Demo)

    这可以通过`java.util.Scanner`类实现,读取用户的键盘输入,并根据输入的命令调用`ProcessBuilder`。 在项目"MyDOS"中,可能包含了实现上述功能的Java源代码和相关资源。通过分析和学习这些代码,开发者可以更深入...

    Java开发环境搭建

    2. **PATH**:添加 `%JAVA_HOME%\bin` 到PATH变量,这样可以在任何地方调用Java命令。 3. **CLASSPATH**:虽然不是必需的,但通常会设置为 `.;%JAVA_HOME%\lib`,`.` 表示当前目录,`%JAVA_HOME%\lib` 包含了JDK的...

Global site tag (gtag.js) - Google Analytics