Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java调用CMD命令

Java调用CMD命令

作者头像
JaneYork
发布于 2023-10-11 06:23:07
发布于 2023-10-11 06:23:07
5650
举报

Windows下复制: copy C:\server\data\ccgavr\1.png C:\server\data\ccgavr\2.png Windows重命名: ren 1.png 3.png ren C:\server\data\ccgavr\1.png C:\server\data\ccgavr\3.png(DOS中提示命令语法不正确,powershell则可以)

代码语言:javascript
AI代码解释
复制
package com.pgz.cmd;

import java.io.BufferedReader;
import java.io.File;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.LineNumberReader;

import com.pgz.util.LogUtil;

public class CMDTest {

	public static void main(String[] args) {
		String cmdStr = "mspaint";// 打开画板
		cmdStr = "ren C:/server/data/ccgavr/3.png C:/server/data/ccgavr/4.png";// 重命名,DOS中不可
		cmdStr = "ren 3.png 4.png";
		cmdStr = "ipconfig";
//		executeCMD(cmdStr);
		System.out.println(executeLocalCmd(cmdStr, null));
	}

	/**
	 * 直接System.out
	 * 测试OK
	 * @param cmdStr  CMD命令字符
	 */
	public static void executeCMD(String cmdStr) {

		Runtime run = Runtime.getRuntime();
		try {
//			Process process = run.exec("cmd.exe /k start " + cmdStr);
			Process process = run.exec("cmd.exe /c " + cmdStr);
			InputStream in = process.getInputStream();
			while (in.read() != -1) {
				System.out.println(in.read());
			}
			in.close();
			process.waitFor();
		} catch (Exception e) {
			LogUtil.exception(e);
		}

	}

	/**
	 * 将日志输出到文件
	 * 待测试
	 * @param cmmands    命令数组adb logcat -v time > d:/adb.log { "adb",
	 *                   "logcat","-v","time"}
	 * @param logToFile  保存的文件
	 * @param dirTodoCMD 在此目录下执行
	 * @return
	 */
	public static String executeCMDFile(String[] cmmands, String logToFile, String dirTodoCMD) {

		try {
			ProcessBuilder builder = new ProcessBuilder(cmmands);
			if (dirTodoCMD != null)
				builder.directory(new File(dirTodoCMD));
			builder.redirectErrorStream(true);
			builder.redirectOutput(new File(logToFile));
			Process process = builder.start();
			process.waitFor();
			// 得到命令执行后的结果
			InputStream is = process.getInputStream();
			BufferedReader buffer = new BufferedReader(new InputStreamReader(is, "GBK"));
			String line = null;
			StringBuffer sbBuffer = new StringBuffer();
			while ((line = buffer.readLine()) != null) {
				sbBuffer.append(line);
			}

			is.close();
			return sbBuffer.toString();
		} catch (Exception e) {
			LogUtil.exception(e);
		}
		return null;
	}
	
	/**
	 * Windows执行本地命令行
	 * 测试ok
	 * @param cmd
	 * @param workpath  在此目录下执行
	 * @return
	 */
	 public static String executeLocalCmd(String cmd, File workpath) {  
		 try {  
			 String[] cmdA = { "cmd.exe", "/c", cmd };  
             Process process = null;
             if(workpath==null){
            	 process = Runtime.getRuntime().exec(cmdA);  
             }else{
            	 process = Runtime.getRuntime().exec(cmdA, null, workpath);  
             }
//             LineNumberReader br = new LineNumberReader(new InputStreamReader(process.getInputStream()));
             LineNumberReader br = new LineNumberReader(new InputStreamReader(process.getInputStream(),"GBK"));
             StringBuffer sb = new StringBuffer();  
             String line;  
             while ((line = br.readLine()) != null) {  
            	 sb.append(line).append("\n");  
             }  
             return sb.toString();  
         } catch (Exception e) {
        	 LogUtil.exception(e);
         }  
         return null;  
     }  
	

}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现
我们项目要java执行命令“dmidecode -s system-uuid”获取结果,然而碰到问题,当项目一直执行好久后,Runtime.getRuntime().exec()获取结果为空,但也不报错,重启项目就又可以了,所以猜测属于陷阱2,并进行记录。
刘大猫
2024/11/17
1.2K0
java 实现 调用Linux命令工具类
目录 1 代码实现 1 代码实现 public class CommandUtil { public static String execuCmd(String cmd) { System.out.println("执行命令[ " + cmd + "]"); Runtime run = Runtime.getRuntime(); try { Process process = run.exec(cmd);
一写代码就开心
2022/08/14
1.5K0
java 执行linux命令
本文介绍如何利用Java执行Linux命令,包括安装JDK、配置环境、执行Linux命令等步骤。
梦里茶
2017/12/29
4.8K0
java:执行linux sudo命令
版权声明:本文为博主原创文章,转载请注明源地址。 https://blog.csdn.net/10km/article/details/78913746
10km
2019/05/25
6.9K1
【转】Java中Runtime.exec的一些事 
Runtime类是一个与JVM运行时环境有关的Singleton类,有以下几个值得注意的地方:
yiduwangkai
2019/09/17
3.3K0
《Arthas系列2》三分钟理解Java如何使用命令行
今天学习一下Arthas是如何打印出当前机器上的所有Java线程的和调用控制台的,这个技术点不清楚,我们从Arthas的代码中找出实现,学习下知识点,在下次自己用的时候可以有思路,但是Arthas的代码量如此之多,在没人带的情况下怎么读代码呐?
香菜聊游戏
2021/05/26
7220
《Arthas系列2》三分钟理解Java如何使用命令行
java执行cmd ping命令是什么_急求;java调用window的cmd的ping指令。。。。[通俗易懂]
public static void main(String[] args) throws IOException, InterruptedException {
全栈程序员站长
2022/09/27
1.5K0
java执行cmd ping命令是什么_急求;java调用window的cmd的ping指令。。。。[通俗易懂]
JAVA001-java  调用bash shell脚本阻塞问题的解决
使用java实现的web端,web端相应用户的界面操作,使用java调用bash实现的shell脚本进行实际的操作,操作完成返回执行结果给web 界面显示。
上善若水.夏
2018/09/28
1.6K0
Runtime.getRuntime().exec执行scp失败
1.本地scp命令正常 [root@hadron ~]# scp /root/scripts/* 192.168.1.157:/opt Step1.sh 100% 340 0.3KB/s 00:00 Step2.sh
程裕强
2022/05/06
6770
获取当前jvm数据
获取当前jvm数据 import java.io.InputStreamReader; import java.io.LineNumberReader; import java.lang.management.ManagementFactory; import org.apache.log4j.Logger; import com.sun.management.OperatingSystemMXBean; public class MonitorUtil { private static fi
JQ实验室
2022/02/14
2.1K0
【开发环境】Java 文件生成 Windows 系统 .bat 批处理文件并自动执行 ( 输出 GB2312 格式处理中文乱码 | \r\n换行 | Runtime 执行 Cmd 命令 )
在 Windows 中生成 bat 脚本时 , 必须输出 gb2312 编码的字符串 , 否则执行时会出现中文乱码 ;
韩曙亮
2023/03/29
1.9K0
【开发环境】Java 文件生成 Windows 系统 .bat 批处理文件并自动执行 ( 输出 GB2312 格式处理中文乱码 | \r\n换行 | Runtime 执行 Cmd 命令 )
Java.Utils:获取电脑配置信息
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/159024.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/14
5700
JAVA中调用CMD命令,并输出运行结果
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/119104.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/09
2.2K0
java实现spring boot项目启动时,重启Windows进程
前5个实现了在spring boot在Windows启动服务时候,杀死相应的进程的; 第6个组成了启动相应的进程的方式。
ha_lydms
2023/08/09
5680
Java程序员的日常 —— 多进程开发
最近再弄进程管理相关的工作,因此必要的就涉及到各种系统下关于进程的管理。 这里简单的介绍下: 如何在Java中执行命令 在windows下肯定是dos命令了,而在linux则为shell命令。执行的方式差不多相同: 方法1:Runtime windows版本: Process process = Runtime.getRuntime().exec("ipconfig /all"); Linux版本: Process process = Runtime.getRuntime().exec("ifcon
用户1154259
2018/01/17
1.2K0
精简JRE的思路初探「建议收藏」
引言: JRE是Java程序赖以执行的基础环境,眼下JRE已经很的庞大;即使为了执行一个简单的Hello World的程序。可能依旧须要依赖整个JRE,将近百兆大小的依赖性。
全栈程序员站长
2022/07/08
5670
精简JRE的思路初探「建议收藏」
Java如何调用Linux命令
由于有不少java代码,格式可能在手机上显示比较乱,可以点击最下面阅读原文查看比较整洁的格式 (方式一)适合Java调用本地的Liunx无须任何依赖包 Java代码 /*** * 第一种方法,仅仅执行命令无须关注返回结果 * @throws Exception */ public static void exeCmd() throws Exception{ Runtime r = Runtime.getRuntime(); //执行linux命令,不关心返回结果,此
我是攻城师
2018/05/14
6.1K0
Java能写外挂吗?那就写个跳一跳辅助程序吧
##起初是想使用按键精灵脚本程序控制,但还是选择熟悉的java。我这里使用了工具,造成延迟问题。也求教:java控制安卓的正确姿势,
三哥
2018/07/31
7.7K0
Java能写外挂吗?那就写个跳一跳辅助程序吧
Process类详解
ProcessBuilder是一个final类,Process是一个抽象类。ProcessBuilder.start() 和 Runtime.exec() 方法都被用来创建一个操作系统进程(执行命令行操作),并返回 Process 子类的一个实例,该实例可用来控制进程状态并获得相关信息。
matt
2022/10/25
1.9K0
java tasklist_java 调用 cmd 中的 tasklist 来获取特定进程的PID[通俗易懂]
Process process = Runtime.getRuntime().exec(“tasklist”);
全栈程序员站长
2022/09/05
2K0
推荐阅读
相关推荐
java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档