Runtime 详解四

本文承接《Runtime 详解三》

exec String[] cmdarray

  • 如下所示,Runtime执行cmd指令的方法一共6个,另外3个在其它几篇中已经说过,现在主要讲解红框中带String[]的
  • command:cmd命令/指令,适合程序与参数路径中不带空格的命令,如:"cmd /c del E:/wmx/log.txt"、"cmd /c D:\PotPlayer\PotPlayerMini.exe E:/wmx/zl2.mp4"
  • cmdarray:cmd指令数组,适合程序和参数路径中带空格的命令,程序路径形如“C:\Program Files (x86)\Microsoft Office\root\Office16\WINWORD.EXE”,或参数路径形如“E:\wmx 笔记\Map in-depth.docx”。
  • envp:参数值,提供给command/cmdarray中参数的值
  • dir:cmd程序启动的目录


import com.lct.utils.SystemUtils;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
 * Created by Administrator on 2018/6/27 0027.
 * 杀进程测试类
 */
public class ProcessTest {
    public static void main(String[] args) {
        try {
            /** 指定cmd指令数组
             * 只要有空格,则必须采用如下方式分开写。
             * Runtime.exec(String command)方法是不行的*/
            String[] paramArr = new String[2];
            paramArr[0] = "C:\\Program Files (x86)\\Microsoft Office\\root\\Office16\\WINWORD.EXE";
            paramArr[1] = "E:\\wmx\\Map_in-depth.docx";

            Runtime runtime = Runtime.getRuntime();
            Process process = runtime.exec(paramArr);
            /** 休眠10秒后,关闭WINWORD.EXE程序*/
            Thread.sleep(10000);
            if (process.isAlive()) {
                process.destroy();
            }
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

运行VBS脚本文件

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

/**
 * Created by Administrator on 2018/6/29 0029.
 */
public class volumeTest {
    public static void main(String[] args) {
        try {
            System.out.println(new Date());
            /**创建一个临时文件,它的目录是系统的临时目录,文件名会有一穿随机字符
             * 在虚拟机关闭的时候,自动删除此文件*/
            File file = File.createTempFile("A_wmx", ".vbs");
            file.deleteOnExit();
            /** 这是一条使用vbs操作系统音量静音的脚本内容
             * 将它写入到文件中去*/
            String vbsMessage = "CreateObject(\"Wscript.Shell\").Sendkeys \"\"";
            FileOutputStream fileOutputStream = new FileOutputStream(file);
            OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream, "GBK");
            outputStreamWriter.write(vbsMessage);
            outputStreamWriter.flush();
            outputStreamWriter.close();
            /**然后动态执行此Vbs文件,当然也可以将前缀"wscript"换成常规的"cmd /c"
             * 但是vbs文件建议直接使用"wscript直接运行"*/
            String cmd = "wscript " + file.getPath();
            Runtime.getRuntime().exec(cmd).waitFor();
            System.out.println(cmd);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}





猜你喜欢

转载自blog.csdn.net/wangmx1993328/article/details/80838339