当前位置: 首页 > news >正文

【JAVA】bat文件启动jar场景获取bat文件路径的方法

一、推荐方案:参数传递法

步骤1:修改BAT脚本
@echo off
java -jar -Dbat.file="%~f0" your-app.jar %*

关键参数说明:

  • %~f0:获取BAT文件的完整路径
  • %*:传递所有原始参数
步骤2:Java代码获取参数
public class BatFileNameGetter {public static void main(String[] args) {String batPath = System.getProperty("bat.file");if (batPath != null) {File batFile = new File(batPath);System.out.println("BAT文件名: " + batFile.getName());System.out.println("完整路径: " + batFile.getAbsolutePath());} else {System.out.println("未通过BAT脚本启动");}}
}

二、环境变量法

步骤1:修改BAT脚本
@echo off
set LAUNCHER_BAT=%~f0
java -jar your-app.jar %*
步骤2:Java代码读取环境变量
String batPath = System.getenv("LAUNCHER_BAT");

三、特殊场景处理

1. 路径含空格处理
:: 使用US-ASCII转义双引号
java -jar -Dbat.file="%22%~f0%22" your-app.jar
// 使用Apache Commons Lang解码
String decodedPath = StringEscapeUtils.unescapeJava(batPath);
2. 获取相对路径
:: 获取相对于JAR的路径
set RELATIVE_PATH=%~dp0
java -jar -Dbase.dir="%RELATIVE_PATH%" your-app.jar

四、最佳实践建议

  1. 参数验证:添加路径有效性检查
    if (batPath != null) {File f = new File(batPath);if (!f.exists() || !f.getName().endsWith(".bat")) {throw new IllegalArgumentException("无效BAT路径");}
    }
    
  2. 日志记录:记录完整的启动信息
    logger.info("启动器路径:{}", batPath);
    
  3. 路径消毒:防止路径注入攻击
    String safePath = Paths.get(batPath).normalize().toString();
    

选择参数传递方案可确保最可靠地获取BAT文件名,建议配合参数校验和日志记录增强健壮性。

相关文章:

  • 回调函数用法详细讲解
  • L1-002 打印沙漏
  • libwebsocket建立服务器需要编写LWS_CALLBACK_ADD_HEADERS事件处理
  • [区块链lab2] 构建具备加密功能的Web服务端
  • 基于javaEE+jqueryEasyUi+eclipseLink+MySQL的课程设计客房管理信息系统
  • 【系统搭建】Ubuntu系统两节点间SSH免密配置
  • KALI搭建log4j2靶场及漏洞复现全流程
  • Uniapp:列表选择提示框
  • JSP技术入门指南【一】利用IDEA从零开始搭建你的第一个JSP系统
  • Docker Compose 命令实现动态构建和部署
  • 2025年推荐使用的开源大语言模型top20:核心特性、选择指标和开源优势
  • 全链路开源数据平台技术选型指南:六大实战工具链解析
  • 纷析云开源财务软件:企业财务数字化转型的灵活解决方案
  • lombok requires enabled annotation processing
  • 三层路由器,SSH远程登录访问路由器,通过telnet远程登录访问路由器(不安全),路由器的基本设置之多网络互联解决办法:单臂路由
  • Web3技术如何提升用户数据保护
  • 05-DevOps-Jenkins自动拉取构建代码
  • 【路由交换方向IE认证】BGP选路原则之Local Preference属性
  • 计算机网络 实验四 静态路由的配置与应用
  • 自动化浏览器环境与 Node.js 环境的逆向分析:完整教程
  • 国内优秀设计网站推荐/一键优化清理手机
  • 做玉的网站/网站排名怎么搜索靠前
  • 岳阳做公司网站/百度的首页
  • 适合企业网站的cms/如何建立一个网站平台
  • 在线网页转pdf/南宁seo外包靠谱吗
  • 网站开发页面设计过程/网络营销知名企业