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.pswp.cn/news/532891.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/532891.shtml
英文地址,請注明出處:http://en.pswp.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…