最近遇到一个项目需求需要实现远程更新,但是本地项目无法更新自己,这让博主很是头疼,既然自己无法更新自己的话,那就自建新的项目,通过本地项目来调用新项目接口来更新本地项目。

代码如下:

/**
* 重启完成更新
*/
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();
}
}
}
}

最新文章

  1. IIS7配置Gzip压缩 JS压强失败的原因
  2. 使用phar上线你的代码包
  3. 【转】 Newtonsoft.Json高级用法
  4. winform 固定splitContainer某一部分大小
  5. hilbert矩阵
  6. jenkins系列1--自动打tag
  7. ostack
  8. lvs+keepalive实现双主模式(采用DR),同时实现TCP和UDP检测实现非web端的负载均衡,同时实现跨网段的通讯
  9. 第三章 CLR如何解析引用类型
  10. 弹筐里同一个按钮判断是从哪里点击过来的form
  11. django项目添加utf-8编码支持中文
  12. msvc命令行cl编译c程序问题及解决
  13. Java中两个线程是否可以同时访问同一个对象的两个不同的synchronized方法?
  14. GitHub没有实时通知怎么办?当然是自己上手写一个啊!
  15. Atitti 固化数据库表结构方案
  16. 【CSAPP笔记】11. 存储器层次结构
  17. A New Function LightOJ - 1098()
  18. php的session存放数组
  19. hust 1590 - 方块游戏 数学
  20. 23SpringMvc_各种参数绑定方式-就是<input那种

热门文章

  1. Qt编写自定义控件45-柱状标尺控件
  2. 一百四十一:CMS系统之根据板块过滤显示帖子
  3. Oracle ORA-00984: column not allowed here
  4. (十二)class文件结构:魔数和版本
  5. Oracle系统表整理+常用SQL语句收集(转载)
  6. 关于async await的测试
  7. C#6.0-8.0新功能、ValueTuple
  8. 2019-10-24 李宗盛 spss作业
  9. 如何找到linux centos7 中 redis.conf
  10. 阿里云主机如何设置swap