远程调用cmd更新本地jar
最近遇到一个项目需求需要实现远程更新,但是本地项目无法更新自己,这让博主很是头疼,既然自己无法更新自己的话,那就自建新的项目,通过本地项目来调用新项目接口来更新本地项目。
代码如下:
/**
* 重启完成更新
*/
public boolean restart() {
log.info("restart");
String command = "cmd /c start C:\\rct\\winsw\\rct\\update.bat";
//测试
String distName = "dist";
String jarName = "rct-demo-1.0.jar";
String bat;
if (type.equals("dist")) {
log.info("dist");
bat = "@echo off\n" +
"%1 mshta vbscript:CreateObject(\"Shell.Application\").ShellExecute(\"cmd.exe\",\"/c %~s0 ::\",\"\",\"runas\",1)(window.close)&&exit\n" +
"cd /d \"%~dp0\"\n" +
"net stop \"" + webService + "\"" + "\n" +
"rmdir /S /Q " + targetFile + "\\" + "dist" + "\n" +
"xcopy /Y /E /i " + sourceFile + "\\" + distName + " " + targetFile + "\\" + distName + "\n" +
"net start \"" + webService + "\"";
} else if (type.equals("jar")) {
log.info("jar");
bat = "@echo off\n" +
"%1 mshta vbscript:CreateObject(\"Shell.Application\").ShellExecute(\"cmd.exe\",\"/c %~s0 ::\",\"\",\"runas\",1)(window.close)&&exit\n" +
"cd /d \"%~dp0\"\n" +
"net stop \"" + jarService + "\"" + "\n" +
"xcopy /Y /E /i " + sourceFile + "\\" + jarName + " " + targetFile + "\\" + jarName + "\n" +
"net start \"" + jarService + "\"";
} else {
log.info("all");
bat = "@echo off\n" +
"%1 mshta vbscript:CreateObject(\"Shell.Application\").ShellExecute(\"cmd.exe\",\"/c %~s0 ::\",\"\",\"runas\",1)(window.close)&&exit\n" +
"cd /d \"%~dp0\"\n" +
"net stop \"" + jarService + "\"" + "\n" +
"net stop \"" + webService + "\"" + "\n" +
"rmdir /S /Q " + targetFile + "\\" + "dist" + "\n" +
"xcopy /Y /E /i " + sourceFile + "\\" + jarName + " " + targetFile + "\\" + jarName + "\n" +
"xcopy /Y /E /i " + sourceFile + "\\" + distName + " " + targetFile + "\\" + distName + "\n" +
"net start \"" + jarService + "\"" + "\n" +
"net start \"" + webService + "\"";
}
creatBat(bat);
log.info("cmd exec");
try {
if (HttpUtil.isConnect(checkUrl)) {
updated = true;
try {
Thread.sleep();
} catch (InterruptedException e) {
e.printStackTrace();
}
HttpUtil.HttpClientPost(cmdUrl, command);
} else {
errored = true;
return false;
}
} catch (Exception e) {
log.error("http请求异常");
e.printStackTrace();
errored = true;
return false;
}
log.info("cmd success");
return true;
} public void creatBat(String bat) {
FileWriter fw = null;
try {
fw = new FileWriter("C:\\rct\\winsw\\rct\\update.bat");
fw.write(bat);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fw != null) {
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
远程调用cmd更新本地jar的更多相关文章
- git如何强制用远程分支更新本地
git本地即使有修改如何强制更新: 本地有修改和提交,如何强制用远程的库更新本地.我尝试过用git pull -f,总是提示 You have not concluded your merge. (M ...
- 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)
一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...
- 架构师之路-在Dubbo中开发REST风格的远程调用
架构师之路:从无到有搭建中小型互联网公司后台服务架构与运维架构 http://www.roncoo.com/course/view/ae1dbb70496349d3a8899b6c68f7d10b 概 ...
- 【Rest】在Dubbo中开发REST风格的远程调用(RESTful Remoting)
目录 概述 REST的优点 应用场景 快速入门 标准Java REST API:JAX-RS简介 REST服务提供端详解 HTTP POST/GET的实现 Annotation放在接口类还是实现类 J ...
- hession RMI 远程调用
/** * * @author administror * 在java中,需要去extends 继承java.rmi.Remote 接口,才能称为在于服务器流的远程对象. * 各客服端调用 * */p ...
- 定时从远程的数据库中取数据,然后把取出来的数据插入或更新本地的oracle数据库的表
最近项目中有一种需求: 大致需求是这样的 通过给定的 用户名和密码 要定时从远程的数据库中取数据,然后把取出来的数据插入或更新本地的oracle数据库的表 项目的结构式struts1 hibernat ...
- JavaEE(8) - 本地和远程调用的有状态以及无状态Session EJB
1. 使用NetBeans开发Session Bean #1. 创建项目:File-->New Project-->Java EE-->EJB Module #2. 在项目中创建Se ...
- openoffice excel word 转换pdf 支持本地调用和远程调用
OpenOffice.org 是一套跨平台的办公室软件套件,能在Windows.Linux.MacOS X (X11)和 Solaris 等操作系统上执行.它与各个主要的办公室软件套件兼容.OpenO ...
- Spring Batch远程分区的本地Jar包模式
1 前言 欢迎访问南瓜慢说 www.pkslow.com获取更多精彩文章! Spring相关文章:Springboot-Cloud Spring Batch远程分区对于大量数据的处理非常擅长,它的实现 ...
随机推荐
- Greenwich.SR2版本的Spring Cloud Eureka实例
作为微服务架构中最为核心和基础的服务治理,注册中心提供了微服务实例的自动化注册与发现.而作为一个服务注册中心,eureka的作用与传统的zk.etcd的作用是一样的,同样也支持高可用(集群).不同之处 ...
- MySQL数据库备份之mysqldump
创建用户备份的用户 MariaDB [mysql]> create user 'backdata'@'localhost' identified by 'test@123456';Query O ...
- Mysql备份工具mysqldump和mysqlhotcopy
(1).Mysql备份类型 1)按照备份时对数据库的影响分为 Hot backup(热备):也叫在线备份.指在数据库运行中直接备份,对正在运行的数据库没有任何影响. Cold backup(冷备):也 ...
- 使用ClientScriptManager向客户端注册脚本
ClientScriptManager在非异步(就是说非AJAX)环境下使用的.如果要在异步环境下注册脚本应该使用ScriptManager的静态方法来注册(ScriptManager兼容异步于非异步 ...
- iOS从App跳转至系统设置菜单各功能项
跳到系统设置里的WiFi界面 info里面设置: 在项目中的info.plist中添加 URL types 并设置一项URL Schemes为prefs,如下图 代码: 复制代码 代码如下: NSUR ...
- dos下通过命令访问url网址
psexec.exe工具: https://blog.csdn.net/feier7501/article/details/8841756 https://www.cnblogs.com/boltki ...
- Nginx+keepalived 高可用双机热备(主从模式/双主模式)
基础介绍负载均衡技术对于一个网站尤其是大型网站的web服务器集群来说是至关重要的!做好负载均衡架构,可以实现故障转移和高可用环境,避免单点故障,保证网站健康持续运行. 关于负载均衡介绍,可以参考:li ...
- webpack官网demo起步中遇到的问题
在webpack官网demo一开始搭建中
- element-ui中的表格嵌套表格
element-ui中有详细的各种表格及表格方法.也有表格展开出现二级的样式,但是却没有表格嵌套二级表格的方案,于是就自己写了一个,样式图如下: 展开后如下 这就是一个普通的二级表格嵌套,用的是el- ...
- layui监听radio点击事件
layui.form.on('radio(layui_dataType)', function(data){ console.log(data.elem); //得到radio原始DOM对象 cons ...