/*** 下载压缩包

*

*@paramid 商户id

*@paramrequest

*@paramresponse

*@returnvoid

*@authorchen.bing

* @Date 2019/11/4 17:35*/@RequestMapping(value= "downloadzip")public voiddownloadzip(String id, HttpServletRequest request, HttpServletResponse response) {if(StringUtils.isBlank(id)) {

LOG.error("商户id为空");return;

}

String rootZipUrl= Global.getProperty("VOUCHER_IMAGE_DIR");

File rootFile= newFile(rootZipUrl);if (!rootFile.exists()) {

LOG.error("当前文件夹不存在", rootZipUrl);return;

}

String zipUrl=rootZipUrl;

SysMerch sysMerch=sysMerchService.selectById(id);if (sysMerch != null) {

String scheme=request.getScheme();

String contextPath=request.getContextPath();

String serverName=request.getServerName();int port =request.getServerPort();

String basePath= scheme + "://" + serverName + ":" + port +contextPath;

String orgCode=sysMerch.getOrgCode();

String merchNo=sysMerch.getMerchNo();

String merchName=sysMerch.getMerchName();

String merchNameDir= rootZipUrl + File.separator +merchName;

String oldZipUrl= rootZipUrl + File.separator + "downloadZip";boolean b =FileUtils.fileNameRenameTo(oldZipUrl,merchNameDir);

zipUrl=oldZipUrl;if(b) {

zipUrl=merchNameDir;

}

String batUrl= zipUrl + File.separator + "安装包" + File.separator + "setup.txt";

File file= newFile(batUrl);if (!file.exists()) {

File parentFile=file.getParentFile();if (!parentFile.exists()) {

parentFile.mkdirs();

}//不存在创建文件和其父目录

FileUtils.createFile(batUrl);

}

setUpMerchLogo(orgCode, merchNo, merchName, request);

String merchLogoBat= "set wind = ws.createshortcut(strDesktop & \"\\%s.lnk\")";

String url= "wind.Arguments=\"%s\"";

String loginUrl= basePath + "/login?org_code_ck_key=" + orgCode + "&merch_no_ck_key=" +merchNo;

String logoBat=String.format(merchLogoBat, merchName);

String merchUrl=String.format(url, loginUrl);

List list = new LinkedList<>();

list.add("@echo off");

list.add("more %0 +5>%temp%yst.vbs");

list.add("%temp%yst.vbs");

list.add("del %temp%yst.vbs");

list.add("exit");

list.add("set ws = createobject(\"wscript.shell\")");

list.add("strDesktop = ws.SpecialFolders(\"Desktop\")");

list.add(logoBat);

list.add("wind.IconLocation = ws.CurrentDirectory & \"\\favicon.ico\"");

list.add("wind.targetpath = \"%ProgramFiles%\\Internet Explorer\\IEXPLORE.EXE\"");

list.add("wind.workingdirectory = \"%ProgramFiles%\\Internet Explorer\"");

list.add(merchUrl);

list.add("wind.save");

OutputStream outputStream= null;try{//加锁,防止在压缩时有图片写入

synchronized(ZIP_LOCK) {

outputStream= newFileOutputStream(file);//此处循环操作是因为要将.bat文件转换为windows格式

for (int i = 0; i < list.size(); i++) {byte[] bytes = list.get(i).getBytes(Charset.forName("GB2312"));

outputStream.write(bytes);if (i

outputStream.write("\r\n".getBytes(Charset.forName("GB2312")));

}

}

outputStream.close();

String batPath= zipUrl + File.separator + "安装包" + File.separator + "setup.bat";

File batFile= newFile(batPath);

batFile.delete();

FileUtils.fileNameRenameTo(batUrl,batPath);

FileUtils.downloadZip(response, rootZipUrl, merchName);

FileUtils.fileNameRenameTo(merchNameDir, oldZipUrl);file.delete();

}

}catch(FileNotFoundException e) {

e.printStackTrace();

}catch(IOException e) {

e.printStackTrace();

}

}

}

java 生成bat_java实现生成windows可执行的批处理文件(.bat)相关推荐

  1. linux java编译后生成文件_Linux终端编译并执行Java文件

    shell 中操作: 1.先创建java项目目录,名称project. mkdir project 2.在项目中创建src和bin目录,src下用于存放 ".java" 文件,bi ...

  2. java冰雹数10_生成的新的数字再执行同样的动作, 循环往复.

    生成的新的数字再执行同样的动作, 循环往复. 声明 可能本文章会有错误, 希望各位读者看到后, 记得回复留言, 提醒我, 以免误人子弟. 本人菜鸡, 还望各位大佬手下留情. 题目: 冰雹数 任意给定一 ...

  3. JAVA利用JXL导出/生成 EXCEL1

    /*** 导出导出采暖市场部收入.成本.利润明细表* @author JIA-G-Y*/public String exporExcel(String str) { String str=Servle ...

  4. java的可执行文件_java生成可执行文件的方法总结

    第一种:在jbuilder中: 首先你要保证Run菜单-->Run     Project能顺利运行 然后Wizards菜单-->Native     Executable     Bui ...

  5. java注解的开发_使用Java注解开发自动生成SQL

    使用注解开发的好处就是减少配置文件的使用.在实际过程中,随着项目越来越复杂,功能越来越多,会产生非常多的配置文件.但是,当配置文件过多,实际维护过程中产生的问题就不容易定位,这样就会徒劳的增加工作量. ...

  6. Android工程中R.java文件的重新生成——注意资源文件的错误

    一.如果二或三步骤还是不能生成R.java中内容,一般是XML文件有错,或者xml引用的资源文件找不到,用排除法删除xml后执行二或者三的步骤. 二. 在Android中使用开源代码或者自己开发项目的 ...

  7. 【java】Java运行时动态生成类几种方式

    1.概述 转载:Java运行时动态生成类几种方式 这里发现自己不知道的,原来Java 还能自己编译自己,学到了. 最近一个项目中利用规则引擎,提供用户拖拽式的灵活定义规则.这就要求根据数据库数据动态生 ...

  8. JAVA实现模板word文档导入,Java依据word模板生成word文档之后台解析和实现及部分代码(一)...

    Java根据word模板生成word文档之后台解析和实现及部分代码(一) 后台主要工作是解析XML定义的标签文件,并获取到数据集,放入到Map中,然后调用Jacob.jar中提供的相关方法来实现替换. ...

  9. bpmn 文件 服务器部署,Java项目activiti BpmnModel生成的流程图,部署服务器乱码问题...

    Java项目activiti BpmnModel生成的流程图,部署服务器乱码问题 Java项目activiti BpmnModel生成的流程图,部署服务器乱码问题 项目中需要前端查看流程的情况,所以需 ...

最新文章

  1. ubuntu16.04系统下安装fasttext文本分类库
  2. 内存对齐/字节对齐/数据对齐/地址总线对齐
  3. stl中的list学习笔记
  4. 查看源代码不方便?我有利器
  5. 自定义DataSet
  6. Ubuntu16.04 修改主机名
  7. vb.net调用oracle存储过程,vbnet2008连接oracle增删改查学习笔记(经典crud_含存储过程).doc...
  8. java 策略模式 促销_java设计模式——策略模式
  9. 相机噪声与深度感知的方法梳理
  10. java getidentifier_android – 如何使用getResource.getIdentifier()获取布局?
  11. 线程的同步与互斥,死锁
  12. javaweb实训第二天上午——jQuery基础
  13. 加拿大计算机硕士gpa不够,加拿大研究生留学申请者绩点低怎么办?这四类应对方法你都知道吗?...
  14. 进销存软件定制开发怎么做?
  15. java邮件服务器搭建_邮件服务器+javamail(仅包括发送)搭建
  16. 服务器开机显示检查电缆,电脑开机显示无VGA电缆是怎么回事,求答!
  17. 你的梦想是什么?灿星文化眼含热泪只想IPO
  18. 【无标题】程序员的一大步
  19. Bert模型(一)安装及问题解决(基本每一步都有问题)
  20. superpixels

热门文章

  1. 解决Linux docker中的mysql区分大小写问题
  2. SQL基础语句(详解版)
  3. 实战_01_Spring SpringMVC 整合Mybaits
  4. gb-heima/order 项目 处理
  5. 计算机2级什么时间考,全国计算机2级考试什么时间出成绩单
  6. root - 计算机术语,root什么意思
  7. .net redis定时_一场由fork引发的超时,让我们重新探讨Redis的抖动问题
  8. Qt中线程的简单使用
  9. Python 线程创建和传参 - Python零基础入门教程
  10. 软件数控编程_这么多CNC数控编程软件, 你觉得哪个好?