windows系统定时重启自定义exe程序
工作需要, Windows系统定时重启自定义exe程序. 写了如下程序, 按照说明(readme.txt)修改批处理文件中的四个参数即可:
1.readme.txt
- 第一个参数:进程名(不用带exe)
- 第二个参数:大屏exe路径
- 第三个参数:定时任务循环时间(秒)
- 第四个参数:结束与重启的间隔时间(毫秒)
2.批处理文件dp.bat(注意:第三个参数单位是s,第四个参数单位是ms)
- java -jar dp.jar Foxmail D:\\Tools\\Foxmail\\Foxmail.exe 10 5000
- pause
3.task.java(将工程导出为可执行jar包dp.jar, 我的运行环境为jdk1.7,不过和jdk关系应该不大,没测试...)
- package com.kd;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.HashSet;
- import java.util.List;
- import java.util.Set;
- import java.util.concurrent.Executors;
- import java.util.concurrent.ScheduledExecutorService;
- import java.util.concurrent.TimeUnit;
- /**
- * @author liangyadong
- * @date 2017年10月1日 下午1:51:58
- * @version 1.0
- */
- public class task {
- static String cmdStr1="";
- //根据pid 结束进程
- public static void killProcessByPidName(String pidName) throws Exception {
- Runtime.getRuntime().exec("taskkill /F /IM " + pidName + ".exe");
- }
- //根据pidname,exe路径 启动进程
- public static void start(String filepath, String pidName) throws Exception {
- Runtime.getRuntime().exec("cmd.exe /c start "+filepath);
- }
- //获取所有进程
- public static List getCurrOsAllPidNameSet(String pidname) throws Exception {
- Set<String> pidNameSet = new HashSet<>();
- List l = new ArrayList<>();
- InputStream is = null;
- InputStreamReader ir = null;
- BufferedReader br = null;
- String line = null;
- String[] array = (String[]) null;
- try {
- Process p = Runtime.getRuntime().exec("TASKLIST /NH /FO CSV");
- is = p.getInputStream();
- ir = new InputStreamReader(is);
- br = new BufferedReader(ir);
- while ((line = br.readLine()) != null) {
- array = line.split(",");
- line = array[0].replaceAll("\"", "");
- line = line.replaceAll(".exe", "");
- line = line.replaceAll(".exe".toUpperCase(), "");
- if(line.startsWith(pidname)){
- l.add(line);
- }
- }
- } catch (IOException localIOException) {
- throw new Exception("获取系统所有进程名出错!");
- } finally {
- if (br != null) {
- br.close();
- }
- if (ir != null) {
- ir.close();
- }
- if (is != null) {
- is.close();
- }
- }
- return l;
- }
- public static void main(String[] args) {
- final ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
- final String pidname = args[0];// 参数1 -- 进程名称
- final String cmdStr1 = args[1];// 参数2 -- exe 路径
- int time = Integer.parseInt(args[2]);// 参数3 -- 定时任务循环间隔(秒)
- final Long time2 = Long.parseLong(args[3]);// 参数4 -- 结束进程与重新启动进程直接的间隔(毫秒)
- System.out.println("----进程名称:"+pidname);
- System.out.println("----exe 路径:"+cmdStr1);
- System.out.println("----定时任务循环间隔(毫秒):"+time);
- System.out.println("----结束进程与重新启动进程直接的间隔(毫秒):"+time2);
- Runnable runnable = new Runnable() {
- public void run() {
- System.out.println();
- System.out.println("--------------------------"+new Date()+"新任务开始------------------");
- try {
- System.out.println(new Date()+"开始结束进程:"+getCurrOsAllPidNameSet(pidname));
- Thread.sleep(time2);
- killProcessByPidName(pidname);
- System.out.println(new Date()+"开始启动进程"+getCurrOsAllPidNameSet(pidname));
- start(cmdStr1,pidname);
- System.out.println(new Date()+"当前进程:"+getCurrOsAllPidNameSet(pidname));
- System.out.println("--------------------------"+new Date()+"新任务结束------------------");
- System.out.println();
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- try {
- killProcessByPidName(pidname);
- service.shutdown();
- } catch (Exception e1) {
- // TODO Auto-generated catch block
- e1.printStackTrace();
- }
- System.out.println("--------------------------"+new Date()+"任务异常------------------");
- System.out.println();
- }
- }
- };
- service.scheduleAtFixedRate(runnable, 0, time, TimeUnit.SECONDS);
- }
- }
windows系统定时重启自定义exe程序的更多相关文章
- Windows系统定时备份MySQL数据库
当一个网站投入使用时,定期备份数据库是必要的事.那么,在Windows系统上,我们该如何做呢? 如下语句可以实现备份及还原MySQL数据库: 备份MySQL数据库 mysqldump -uroot - ...
- windows系统下c语言暂停程序
原文:windows系统下c语言暂停程序 windows系统下,很多C语言初学者的调试时,往往没看到结果程序就退出了,据我所知的方法主要有以下几种 方法一: #include int main() { ...
- windows系统下,在C#程序中自动安装字体
在Windows系统中,原有自带的字体样式有限,有时候我们的程序会使用到个别稀有或系统不自带的字体.因此我们需要将字体打包到程序中,当程序启动时,检测系统是否有该字体,如果没有则安装该字体,也可以动态 ...
- 将Windows系统编译的.NET Core程序发布到Ubuntu系统
在可移植方面.NET Core应用程序分为两种,Portable application(便捷,需要目标机器安装.NET Core Runtime)和Self-contained applicatio ...
- Windows 系统定时自动重启
1.创建新文本并输入 shutdown -r -t 0 保存成.bat文件 2.创建系统任务计划 2.1 在开始中打开[任务计划程序] 2.2 新建创建任务计划目录 2.3 在新目录下新建任务计划即可 ...
- windeployqt.exe 发布windows下qt产生的exe程序
以官方 Qt 5.4.0+MinGW 开发环境为例,从开始菜单-->Qt 5.4.0-->5.4-->MinGW 4.9 (32-bit)-->Qt 5.4 for Deskt ...
- Windows系统使用运行框运行程序
配置步骤 1. 在非系统盘创建一个新文件夹,自定义名称.将需要使用运行框启动的程序或文件放入文件夹,并将其更改为自己容易记忆的名称 2. 创建环境变量 右击 "此电脑" → &qu ...
- Windows系统定时重开或者关机
at 6:00 /every:M,T,W,Th,F,S,Su cmd /c shutdown -r -t 60 (每天早上6点自动重启一次) at 0:00 /every:M,T,W,Th,F,S,S ...
- linux系统定时重启tomcat
#touch auto-start.sh [root@Linux opt]# echo $LANGen_US.UTF-8 #vim auto-start.sh #!/bin/sh export LAN ...
随机推荐
- 解决谷歌google不能访问造成wordpress打开缓慢的问题
近日谷歌又不能访问了,开始没觉得有什么问题.对于技术控的我一直以来谷歌搜索是我的必备工具,这次似乎和往常不太一样,好几天了还是不能访问,通过修改hosts等办法还是没用,只有FQ出去才能访问,但总不能 ...
- 再有人问你synchronized是什么,就把这篇文章发给他
在再有人问你Java内存模型是什么,就把这篇文章发给他.中我们曾经介绍过,Java语言为了解决并发编程中存在的原子性.可见性和有序性问题,提供了一系列和并发处理相关的关键字,比如synchronize ...
- 500 OOPS: vsftpd: cannot locate user specified in 'chown_username':whoever
错误:500 OOPS: vsftpd: cannot locate user specified in 'chown_username':whoever解决方案:在vsftpd.conf中修改如下两 ...
- 【BZOJ】【3612】【HEOI 2014】平衡
DP 唉我还是too naive 这是个整数划分题…… 我想的DP方式是f[i][j][k]表示前 i 个数拼出 j 用了 k 个数的方案数…… 转移当然是比较直观…… 但是只能得30分QAQ 正确的 ...
- SVN使用小结
SVN是Subversion的简称.是一个开放源码的版本号控制系统.在它的管理下,文件和文件夹能够超越时空的限制,权且当作一种奇妙的"时间机器"吧. 基本功能 版本号控制 作为一个 ...
- ORA-12560: TNS: 协议适配器错误的解决方法
ORA-12560: TNS: 协议适配器错误的解决方法 造成ORA-12560: TNS: 协议适配器错误的问题的原因有三个: 1.监听服务没有起起来.windows平台个一如下操作:开始---程序 ...
- 第六章 HashSet源码解析
6.1.对于HashSet需要掌握以下几点 HashSet的创建:HashSet() 往HashSet中添加单个对象:即add(E)方法 删除HashSet中的对象:即remove(Object ke ...
- Bootstrap学习js插件篇之提示框
案例 受到Jason Frame开发的jQuery.tipsy插件的启发,我们才把这个工具提示插件做的更好,而且此插件不依赖图片,只是使用CSS3来实现动画效果,并使用data属性存储标题. 将鼠标悬 ...
- python 读写CSV文件
#-*- coding: UTF-8 -*- import csv import os def WriteToCsv(): '''写CSV文件''' titls = ['序号', '链接', '备注' ...
- 自己定义带三角形箭头的TextView
<?xml version="1.0" encoding="utf-8"? > <resources> <declare ...