开发者社区> 古镇月影> 正文

bat 编译子目录文件

简介: 引用:http://blog.csdn.net/cangwu_lee/article/details/6172034 新年快乐!   经常看到有人问,如何用javac编译多个子目录,现在呈上。   按习惯,不废话,直接上源码。
+关注继续查看

引用:http://blog.csdn.net/cangwu_lee/article/details/6172034

新年快乐!

 

经常看到有人问,如何用javac编译多个子目录,现在呈上。

 

按习惯,不废话,直接上源码。

 

先说一下目录结构:

 

%CD%/src---------------------源码目录

    /webroot/------------输出目录

         /lib---------依赖的.jar

         /classes---编译输出目录

 

 

 

 

主文件:build_compile_batch.cmd


@ECHO OFF

REM 生成自动编译的批处理文件名
SET BAT=_compile_auto.cmd
REM 包含运行
SET WITH_RUN=1

REM SETLOCAL enableDelayedExpansion

ECHO @ECHO OFF>%BAT%

REM 编译后要运行的主类

ECHO SET mainclass=org.mega.MyDemoProgram>>%BAT%
ECHO SETLOCAL enableDelayedExpansion>>%BAT%
ECHO.>>%BAT%
ECHO SET CUR=%%CD%%>>%BAT%
REM 输出目录
ECHO SET OUTPUT=%%CUR%%/webroot>>%BAT%
ECHO CD %%OUTPUT%%>>%BAT%
REM 编译的输出目录
ECHO REM RMDIR /s /q classes>>%BAT%
ECHO IF NOT EXIST classes MKDIR classes>>%BAT%
ECHO CD %%CUR%%>>%BAT%

ECHO.>>%BAT%
ECHO SET CP=%%OUTPUT%%/classes>>%BAT%

REM 准备源码的子目录(包)
ECHO FOR %%%%a IN ( %%OUTPUT%%/lib/*.jar ) DO SET CP=!CP!;%%%%a>>%BAT%
ECHO.>>%BAT%
ECHO SET OPT=-d %%OUTPUT%%/classes -cp %%CP%% -encoding utf-8>>%BAT%

FOR /d %%a IN ( src/*.* ) DO cmd /c build_compile_batch-sub.cmd %%a
ECHO.>>%BAT%

ECHO ECHO 正在编译...>>%BAT%
ECHO javac %%OPT%% %%JFILES%%>>%BAT%
ECHO.>>%BAT%

ECHO IF "%%errorlevel%%" equ "0" (>>%BAT%

ECHO ECHO 编译成功,正在拷贝资源文件...>>%BAT%
ECHO xcopy /i /y src/*.* %%OUTPUT%%/classes>>%BAT%
IF "%WITH_RUN%" EQU "1" (
ECHO SET CP=.;!CP!>>%BAT%
ECHO CD %%OUTPUT%%/classes>>%BAT%
ECHO cd>>%BAT%
ECHO REM ECHO !CP!>>%BAT%
ECHO ECHO 编译完成,正在运行...>>%BAT%
ECHO java -cp !CP! %%mainclass%%>>%BAT%
)
ECHO pause>>%BAT%
ECHO ) ELSE (>>%BAT%
ECHO pause>>%BAT%
ECHO )>>%BAT%


PAUSE

 

 

辅助文件:

build_compile_batch-sub.cmd

 

@ECHO OFF

IF "%1" NEQ "" (
echo %1

IF EXIST %1/*.java (

REM 如果有.java文件,则添加到编译列表
ECHO SET JFILES=%%JFILES%% %1/*.java>>%BAT%
)

REM 处理更深层的包

FOR /d %%b IN ( %1/*.* ) DO cmd /c "build_compile_batch-sub.cmd %%b"

)

 

 

 

 

执行 build_compile_batch.cmd 后,生成 _compile_auto.cmd。

再执行 _compile_auto.cmd,就进行编译、编译后自动运行程序。

 

 

稍修改一下 build_compile_batch.cmd 即可适合其它的项目。 希望有人会喜欢。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
BAT文件语法和技巧(bat文件的编写及使用)
BAT文件语法和技巧(bat文件的编写及使用)
72 0
windows 技术篇 - cmd命令查看当前目录下的所有文件和文件夹以及所有子目录下的文件,dir命令的使用方法
windows 技术篇 - cmd命令查看当前目录下的所有文件和文件夹以及所有子目录下的文件,dir命令的使用方法
2005 0
BAT中for循环处理某目录下的文件
BAT中for循环处理某目录下的文件
165 0
.py文件打包成exe可执行文件
1.安装 pip install pyinstaller 2.命令: 加上-w是去掉调试用的命令行窗口,print会打印在命令行有助于调试用,正式打包的时候就加上-w,-F如果不加会生成一个文件夹的好多个文件,加上之后会生成一个文件,而且大小也小了很多。
970 0
bat判断当前目录是否是根目录
记录下,一遍查用。 @echo offif "%~p0"=="\" (echo 在根目录) else echo 不在根目录pause
1033 0
bat复制文件夹下所有文件到另一个目录
一个需求,网上了半天都是错了,所以记一下吧,方便你我。 copy是文件拷贝,文件夹拷贝需要用到xcopy @echo off::当前盘符set curPath=%cd%set digPath ="%curPath%tool\dig"set PATH=%PATH%;%digPath%wmic ENVI...
6944 0
+关注
古镇月影
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载