5个答案 按时间排序 按投票排序
-
我之前正好做了一个java 调用shell 脚本或者bat脚本的工具类,供楼主参考
为了防止命令进程阻塞,添加两线程处理输出信息package utils; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import org.apache.log4j.Logger; import vo.ResponseData; public class CallCmdUtils { private static Logger logger = Logger.getLogger(CallCmdUtils.class); public static void executeCmd(String cmd){ if(cmd == null || cmd.equals("")){ return; } logger.info("执行命令:"+cmd); String[] cmds = new String[]{"/bin/sh","-c",cmd}; try { Runtime.getRuntime().exec(cmds); } catch (IOException e) { e.printStackTrace(); } } /** * 执行本地命令 cmd格式 windows 环境下查询360运行exe程序: cmd /c tasklist | findstr * "360.*[.exe]" * * @param cmd * @return */ public static ResponseData executeLocalCmd(String cmd) { if(cmd == null || cmd.equals("")){ return ResponseData.FAIL_NO_DADA; } logger.info("执行命令:"+cmd); String[] cmds = new String[]{"/bin/sh","-c",cmd}; StringBuffer sb = new StringBuffer(255); ResponseData data = ResponseData.FAIL_NO_DADA; try { Process process = Runtime.getRuntime().exec(cmds); process.waitFor(); int result = process.exitValue(); if(result == 0){ data.setSuccess(true); InputStream in = process.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(in)); String dataline = null; while ((dataline = br.readLine()) != null) { sb.append(dataline).append("\n"); } br.close(); in.close(); data.setResult(sb.toString().trim()); }else{ InputStream in = process.getErrorStream(); BufferedReader br = new BufferedReader(new InputStreamReader(in)); String dataline = null; while ((dataline = br.readLine()) != null) { sb.append(dataline).append("\n"); } br.close(); in.close(); data.setErrorMsg(sb.toString().trim()); } } catch (Exception e) { e.printStackTrace(); } return data; } public boolean execCommand(String command){ boolean execFlag = true; try { Process proc = Runtime.getRuntime().exec(command); //为了防止命令进程阻塞,添加两线程处理输出信息 new StreamGobbler(proc.getErrorStream(),"["+command+"]ERROR").start(); new StreamGobbler(proc.getInputStream(),"["+command+"]STDOUT").start(); if(proc.waitFor()==0){ logger.error("执行["+command+"]命令成功"); }else{ logger.error("执行["+command+"]命令出错"); execFlag = false; } } catch (IOException ex) { logger.error("执行["+command+"]命令IO异常",ex); execFlag = false; } catch (InterruptedException ex) { logger.error("执行["+command+"]命令被中断",ex); execFlag = false; } return execFlag; } }
package utils; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import org.apache.log4j.Logger; /** * 用于处理Runtime.getRuntime().exec产生的错误流及输出流 * @author shaojing * */ public class StreamGobbler extends Thread { static Logger logger = Logger.getLogger(StreamGobbler.class); InputStream is; String type; OutputStream os; public StreamGobbler(InputStream is, String type) { this(is, type, null); } public StreamGobbler(InputStream is, String type, OutputStream redirect) { this.is = is; this.type = type; this.os = redirect; } public void run() { InputStreamReader isr = null; BufferedReader br = null; PrintWriter pw = null; try { if (os != null) pw = new PrintWriter(os); isr = new InputStreamReader(is); br = new BufferedReader(isr); String line=null; while ( (line = br.readLine()) != null) { if (pw != null) pw.println(line); logger.info(type + ">" + line); } if (pw != null) pw.flush(); } catch (IOException ioe) { ioe.printStackTrace(); } finally{ if(pw != null){ pw.close(); pw = null; } if(isr != null){ try { isr.close(); } catch (IOException e) { e.printStackTrace(); } isr = null; } if(br != null){ try { br.close(); } catch (IOException e) { e.printStackTrace(); } br = null; } } } }
2014年5月15日 00:16
-
可以的, 给你一个简单的ping google的吧 import java.io.BufferedReader; import java.io.InputStreamReader; public class ExecuteShellComand { public static void main(String[] args) { ExecuteShellComand obj = new ExecuteShellComand(); String domainName = "google.com"; String command = "ping -c 3 " + domainName; String output = obj.executeCommand(command); System.out.println(output); } private String executeCommand(String command) { StringBuffer output = new StringBuffer(); Process p; try { p = Runtime.getRuntime().exec(command); p.waitFor(); BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream())); String line = ""; while ((line = reader.readLine())!= null) { output.append(line + "\n"); } } catch (Exception e) { e.printStackTrace(); } return output.toString(); } }
2014年5月14日 15:44
相关推荐
Linux命令行专为新命令行用户设计。 除了命令行使用和shell脚本编写的基础知识外,本书还包括有关命令行上使用的许多常见程序的章节以及更高级的主题。
这是一个用 Node.js 编写的(非常)小型股票应用程序的回购 它包含一个小型命令行实用程序,可从 yahoo-finance API 检索信息并返回有关用户输入的有效代码的信息。 安装 npm install colors npm install lodash ...
回顾命令行0.0.1.0003版发行说明向源代码添加了更多XML注释在回购中添加了SampleUseCases项目0.0.1.0002版发行说明向源代码添加了XML注释为NuGet页面创建了此文档目的为了消除编写命令行应用程序时附带的许多样板...
(极其简单)特征完全用Ruby编写极其简单的脚本可在OSX和Linux上使用(Apple和Linus的粉丝很高兴!) 在CLI中完成互联网最小的干扰=更高的生产率! 计划添加命令行浏览器支持。(无需离开终端!)安装gem install ...
使用ncurses制作第一个命令行项目的指南 介绍 每个人的首次编程经验都是以某种形式的命令行进行的,通常是您选择的语言的问候世界。 int main() { printf("Hello World!\n"); return EXIT_SUCCESS; } 但是最终您...
这个gem提供了一个DSL,可以很容易地用ruby编写各种类型的报告。 它消除了用puts语句填充源代码的麻烦,而为应用程序提供了更具可读性和表现力的接口。 一些最佳功能包括: 自动指示进度的格式化程序 与HTML相似的...
command_line_timetracker 命令行程序,用于记录和可视化在项目上花费的时间。 轻松为多个客户或项目创建发票和工作概览,并使用matplotlib可视化数据。 用Python编写。特征时间跟踪跟踪工作会议的开始和结束时间...
只是一个简单的应用程序,用于演示如何使用Mediatr连接CommandLineParser返回的选项。 只需照常编写动词,然后将IRequest接口应用于它们即可。 创建一个实现RequestHandler的类,mediatr将负责其余的工作。
编写一个如示例WinMain的Windows应用程序,其中窗口的背景色、光标、图标等属性可以设置成自己喜欢的风格。作为该示例的扩展,要求编程实现当在该窗口中单击右键时,播放一曲自己喜欢的音乐。(4学时) 编写一个如...
用C编写的命令行实用程序,可轻松管理UNIX系统上的文件列表。 基本为stdin中的每一行执行一个给定的命令。 应该扩展它以处理多个输入和多个命令。
mpc-一个坚固,轻巧,简单的mpd客户端,用C编写。 ncmpc -ncmpc是功能齐全的MPD客户端。 switchaudio-更改macOS的音频源。 自动化 Ansible-简单的IT自动化。 Capistrano-远程多服务器自动化工具。 Chef -IT...
这个用C语言编写的工具使用Backtracking算法来解决数独难题。 这个想法是通过参加德国互联网论坛的编码挑战而诞生的。 ...
Linux存在几种操作环境,分别是:桌面(desktop)、窗口管理器(window manager)和命令行shell(command line shell)。Linux系统中的每个用户都可以拥有自己的用户操作界面,根据自己的要求进行定制。 Shell是一个命令...
VB的程序代码是允许换行书写的,只要在每次换行的最后一个字符加上换行字符“_”就可以了。例如: 引用: Sub PicMove() Frm.Picture2.Left = Frm.Picture1.Left + _ ’加上换行符 Frm.Picture1.Width End ...
一个脚本,用于删除大量不需要的文件,而使该目录中的其他文件不受影响 脚本将可执行文件与非可执行文件分开,以不同方式处理两组 这些都不是很长,但是大多数或全部都需要您学习新的Shell命令或工具。我们将为
摘要本程序主要涉及的功能是关于双色球选号开奖,程序全部使用 CSharp 编写完成,程序类型为 CLI(Command Line Interface),主程序运
语该启动程序使您可以用TypeScript编写命令行实用程序。 :flexed_biceps:测验 -JavaScript测试框架嘲笑第三方库的配置样品测试命令行工具 -node.js命令行界面的完整解决方案。 -终端字符串样式在终端中创建盒子开发...
让我们编写一个“ Hello World”命令。 创建一个具有以下内容的文件hello.php : <?php require __DIR__. '/vendor/autoload.php' ; use Tarsana \ Command \ Command ; class HelloWorld extends Command { ...
clipt是CLI(命令行界面)番茄计时器。 虽然名称提到命令行,但是配备并支持GUI界面很灵活。 这是一个用C语言为Unix编写的多用户程序,它允许系统的每个用户都有自己的Pomodoro计时器。
单击桌面"开始"按钮,选择"所有程序" "MySQL",在展开项中选择"MySQL Server 5.5",从中选择"MySQL 5.5 Command Line Client",打开MySQL命令行客户端。 然后,输入SQL语句"select * from student;"进行验证。客户端...