zoukankan      html  css  js  c++  java
  • 批处理脚本功能案列总结

    一:实现自动安装字体

    rem 自动安装字体文件到 windows 系统上
    注: 字体文件与 bat 脚本文件在同一个目录下。如上图
    
    
    
    @echo off
    setlocal EnableDelayedExpansion
    cd %~dp0  rem 相当于cd  到当前目录
    for /f "delims=" %%i in ('dir /x /b *.?tf') do (
    set "zt=%%~si"
    mshta "javascript:new ActiveXObject('Shell.Application').NameSpace(20).CopyHere('!zt:=\!',0x0010);close()"
    )
    echo.
    echo 字体安装完毕!
    pause >nul

    二:调用方式:

    String batPath = "D:/文档/aa/aa.bat"; // 把你的bat脚本路径写在这里
    Integer result=  ExecuteShellUtils.execute(batPath);
    System.out.println(result);

    三:java 执行 批处理或者shell 脚本的工具类:

    package com.resafety.design.studio.controller;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.util.concurrent.Callable;
    import java.util.concurrent.Executors;
    import java.util.concurrent.Future;
    import java.util.concurrent.ScheduledExecutorService;
    import java.util.concurrent.TimeUnit;
    
    import com.resafety.util.LogUtils;
    
    /**
     * 执行脚本工具类
     * @author shi
     *
     */
    public class ExecuteShellUtils {
    
        /**
         * 执行脚本
         * @param shell
         * @return
         * @throws Exception
         */
        public static Integer execute(String shell) throws Exception{
            Runtime runtime = Runtime.getRuntime();
            Process process = runtime.exec(shell);
            ProcessClearStream error=new ProcessClearStream(process.getErrorStream(), "Error");
            ProcessClearStream output= new ProcessClearStream(process.getInputStream(),"OutPut");
            error.start();
            output.start();
            Callable<Integer> call=new Callable<Integer>() {
                public Integer  call() throws Exception {
                    Integer status=process.waitFor();
                    return status;
                }
            };
            ScheduledExecutorService singleThreadScheduledExecutor = Executors.newSingleThreadScheduledExecutor();
            Future<Integer> submit = singleThreadScheduledExecutor.submit(call);
            //5分钟脚本未执行完成认为线程阻塞了,强制结束线程
            Integer status = submit.get(5, TimeUnit.MINUTES);
            return status;
        }
        
        /**
         * 清空脚本缓存流类,防止线程阻塞
         * @author shi
         *
         */
        static class ProcessClearStream extends Thread{
            private InputStream inputStream;
            private String type;
    
            public ProcessClearStream(InputStream inputStream, String type) {
                this.inputStream = inputStream;
                this.type = type;
            }
    
            public void run() {
                try {
                    InputStreamReader inputStreamReader = new InputStreamReader(
                            inputStream,"GBK");
                    BufferedReader br = new BufferedReader(inputStreamReader);
                    // 打印信息
                    String line = null;
                    while ((line = br.readLine()) != null) {
                        //LogUtils.debug(line);
                        System.out.println(line);
                    }
                    // 不打印信息
    //                 while (br.readLine() != null);
                } catch (IOException ioe) {
                    ioe.printStackTrace();
                }
            }
        }
    
    }
  • 相关阅读:
    numpy—————数组操作
    ML———聚类算法之K-Means
    DataFrame————数据离散化处理(元素定位与离散化处理)
    windows 搭建和配置 hadoop + 踩过的坑
    Pandas -----简述 Series和DataFrame
    numpy 函数和用法总结、示例
    分词————jieba分词(Python)
    (31)本地yum仓库的安装配置
    (30)zookeeper的数据结构
    (29)zookeeper的命令行客户端
  • 原文地址:https://www.cnblogs.com/sunliyuan/p/13515981.html
Copyright © 2011-2022 走看看