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

/*** 下载压缩包

*

*@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();

}

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/532891.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 代码块的作用_4种Java代码块的作用讲解

4种Java代码块的作用讲解时间&#xff1a;2017-06-28 来源&#xff1a;华清远见JAVA学院今天华清Java学院小编要和大家分享的是Java代码块的作用&#xff0c;代码块是一种常见的代码形式&#xff0c;他用大括号“{&#xff5d;”将多行代码封装在一起&#xff0c;形成一个独…

java properties用法_java中Properties文件加载和使用方法

一.Properties简介Properties 类继承自HashTable&#xff0c;提供的方法很像Map的实现类HashMap。它在 Java 编程的早期就有了&#xff0c;并且几乎没有什么变化。J2SE 的 Tiger 版本增强了这个类&#xff0c;不仅可以用它在单独一行中指定用等号分隔的多个键-值对(其中键和值是…

java ip归属地查询_JAVA版IP地址查询调用示例

package cn.juhe;import net.sf.json.JSONObject;import org.springframework.web.client.RestTemplate;/*** ip地址查询Java版本demo*/public class IpDemo {//请求的接口地址public static final String REQUEST_URL "http://apis.juhe.cn/ip/ipNew?ip%s&key%s&q…

java 多个异常处理_Java 多个异常共享同一个异常处理器的方法

传统的异常处理我们先来看下&#xff0c;传统的异常处理方式&#xff1a;// not share exception handlerint[] intArray new int[3];try {for (int i 0; i < intArray.length; i) {intArray[i] i;System.out.println("intArray[" i "] " intArr…

java基础知识点_JAVA基础知识

1.注释&#xff0c;关键字&#xff0c;标识符1.注释(1)注释&#xff1a;解释说明程序的而文字。(2)注释的分类&#xff1a;单行注释 格式&#xff1a; //注释的文字多行注释 格式&#xff1a;/*注释的文字*/文档注释 格式&#xff1a;/**注释的文字*/(3)注释的作用&#xff1a;…

java栈的应用_Java堆栈应用程序

我有一个Java问题&#xff0c;涉及阅读一个文本文件&#xff0c;并检查它是否正确地平衡了花括号&#xff0c;方括号和括号 - {&#xff0c;}&#xff0c;[&#xff0c;]&#xff0c;(和) ”。读取文件没有问题&#xff0c;但现在我应该使用名为DelimPos的数据成员来保存行和字…

Linux下导出MySQL为SQL文件_在linux命令下导出导入.sql文件的方法

本文讲述了在linux命令下导出导入.sql文件的方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;一、导出数据库用mysqldump命令(注意mysql的安装路径&#xff0c;即此命令的路径)&#xff1a;1、导出数据和表结构&#xff1a;mysqldump -u用户名 -p密码 数据库名 >…

python无人机路径规划算法_RRT算法在Python中的实现,快速,拓展,随机,树

"""《基于智能优化与RRT算法的无人机任务规划方法研究》博士论文《基于改进人工势场法的路径规划算法研究》硕士论文"""import matplotlib.pyplot as pltimport randomimport mathimport copyshow_animation Trueclass Node(object):"&quo…

uc3842改可调电源教程_明纬开关电源改可调详细教程

1.拆除启动电阻&#xff0c;电路板是R12R59R58R9 四个150K的电阻。2.拆除原494供电&#xff0c;去掉J22一根跳线&#xff0c;12V辅助电源正极接J22到494一端&#xff0c;负极接地。3.去掉J15更换为20K电阻&#xff0c;同时拆掉变压器下面的ZD1过压保护&#xff0c;输出可达到50…

duino例程 stm32_stm32duino

{"data":{"id":"8000-000000437045-0","name":"SEO专题页栏目分发组","type":"1","position":"8000-000000004003-0","status":1,"linkList":[{"id"…

java webservice ip_通过Web Service实现IP地址查询功能的示例

实例01 实现一个简单的Web服务访问本实例将实现IP地址查询接口服务&#xff0c;根据用户传入的IP地址返回IP所在的省、市、地区&#xff0c;实例中将会用到IP地址库用于查询信息&#xff0c;由于数据较多&#xff0c;所以读者可在光盘资源文件中直接附加数据库文件&#xff0c;…

java默认数组值_数组元素默认的初始值都是什么

在Java中&#xff0c;使用数组时&#xff0c;如果为数组分配了内存空间&#xff0c;但是没有为数组元素指定初始值&#xff0c;系统会自动为数组元素指定初始值。数组元素的初始值与数组的数据类型有关&#xff0c;对于不同数据类型的数组&#xff0c;其数组元素的初始值是不一…

java 异步通信处理_java异步通信

在Merlin之前,编写Socket程序是比较繁琐的工作.因为输入输出都必须同步.这样,对于多客户端客户/服务器模式,不得不使用多线程.即为每个连接的客户都分配一个线程来处理输入输出.由此而带来的问题是可想而知的.程序员不得不为了避免死锁,线程安全等问题,进行大量的编码和测试.很…

Java统计做题正确率_ResNet:训练期间的准确率为100%,但使用相同数据的预测准确率为33%...

我之前遇到过类似的问题&#xff0c;但解决方案非常简单 . 你需要增加时代数 . 这是1000个纪元后的输出[[ 9.99999881e-01 8.58182432e-08 9.54004670e-12][ 8.58779623e-20 9.99999881e-01 6.76907632e-08][ 2.12900631e-26 4.09224481e-34 1.00000000e00]]这是培训日志..Epoc…

java成员初始化顺序_Java成员初始化顺序

1. 初始化顺序在类的内部&#xff0c;变量定义的先后顺序决定了初始化的顺序。即使变量散布于方法定义之间&#xff0c;他们仍会在任何方法(包括构造器)被调用之前初始化。2. 静态成员初始化顺序1⃣️初始化类的静态成员或者静态块&#xff0c;静态初始化只在Class对象首次加载…

java五星好评点评器_亲,麻烦给个五星好评!—RatingBar

引言上一篇的CheckBox已经让大家越来越接近实战演练了&#xff0c;本章我们继续分享干货给大家&#xff0c;今天介绍一个实用的UI控件RatingBar(星级评分条)&#xff0c;对于使用过电商APP(某东&#xff0c;某宝等)的小伙伴们来说&#xff0c;应该不会陌生。在对商品进行评价时…

java激光推送ios_关于ios极光推送server端注意的地方

今天试用了极光推送API用它是因为&#xff0c;大多数人说它的文档是最全的&#xff0c;但是用过之后&#xff0c;发现关于IOS的文档&#xff0c;还是很不够&#xff0c;导致走了一点弯路&#xff01;特别是服务端的代码&#xff1a;https://github.com/jpush/jpush-api-java-cl…

日是这一年的等几天Java代码_java中计算指定日期是一年的第几天的方法

Java输入日期计算是这年的第几天&#xff1a;思路通过年份区分出是闰年还是平年&#xff0c;平年 2 月 28 天&#xff0c;闰年 2 月 29 天&#xff1b;1、3、5、7、8、10、12 月份 31 天其余月份均为 30 天&#xff1b;然后将每个月的天数相加即可&#xff0c;注意如果输入的是…

[2021-CVPR] Fine-grained Angular Contrastive Learning with Coarse Labels 论文简析

[2021-CVPR] Fine-grained Angular Contrastive Learning with Coarse Labels 论文简析 论文地址&#xff1a;https://arxiv.org/abs/2012.03515 代码地址&#xff1a;https://github.com/guybuk/ANCOR 首先通俗地介绍一下细粒度&#xff08;fine-grained&#xff09;&#…

orcle mysql 查询_Oracle与Mysql的高级查询与难点sql

一、连接查询 1. 内连接 内连接用于返回满足连接条件的所有记录。默认情况下&#xff0c;在执行连接查询时如果没有指定任何连接操作符&#xff0c;那么这些连接查询都属于内连接。 Sql 代码 1. SELECT a.dname,b.ename from depta,empb where a.deptnob.deptno and a.deptno10…