::添加当前目录下及其子目录下的所有jar到classpath中
::编译当前目录下及其子目录下的所有源文件
::根据源文件的包结构在bin下创建对应的目录,然后将生成的class文件放进对应的目录下
@echo off&setlocal enabledelayedexpansion&&color 1f
if exist build.lst del build.lst
if exist bin rd /s /q bin
md bin
java -version
if %errorlevel% neq 0 goto EnvAlert
set line=TestClientTool coded by xiaoyong12
set display=
for /l %%i in (0,1,50) do (
if not !dispaly! == !line! (set display=!display!!line:~%%i,1!) else ( set display= )
title !display!
ping/n 1 127.1>nul
)
echo/
set line=请输入主类名(如com.test.Test):
for /l %%i in (0,1,22) do (
set/p=!line:~%%i,1!
ping/n 1 127.1>nul
)
::添加所有jar文件到classpath中
set /p class=
set var=
for /f %%i in ('dir /b /s %cd%') do (
if "%%~xi" == ".jar" set var=!var!%%i;
)
set var=!var!.;
set classpath=%classpath%;!var!
cls
::编译所有java源文件,如果源文件有package结构,标志为0,没有package结构,标志为1
for /f %%i in ('dir /b /s %cd%') do (
if "%%~xi" == ".java" (
find "package" %%i>nul
if !errorlevel! equ 0 (
for /f "tokens=1,2 skip=2" %%j in ('find "package" %%i') do (
echo %%i 0 %%k>>build.lst
)
) else (
echo %%i 1 >>build.lst
)
)
)
set curdir=%cd%
for /f "tokens=1,2,3" %%i in (build.lst) do (
if %%j equ 1 (
javac %%i
if !errorlevel! neq 0 ( echo %%i文件编译发生错误>>error.lst ) else (
move "%%~dpni.class" "!cd!\bin" )
) else (
javac %%i
if !errorlevel! neq 0 ( echo %%i文件编译发生错误>>error.lst ) else (
set package=%%k
set package=!package:;=!
call :makedir !package!
set package=!package:.=\!
move "%%~dpni.class" "!curdir!\bin\!package!"
cd /d !curdir!
)
)
)
cd /d !curdir!
copy *.xml !curdir!\bin >nul 2>nul
copy *.properties !curdir!\bin >nul 2>nul
cd /d !curdir!/bin
java %class%
if %errorlevel% equ 0 goto stopped else (
pause>nul )
:alert
cls
for /l %%i in (1,1,8) do (
echo.
)
echo 请确保%class%.java文件在当前目录下,并且所引用的所有jar包在当前/lib目录下,重新执行!
ping /n 4 127.0.0.1>nul&exit
:stopped
ping/n 3 127.1>nul&echo/
set line=执行结束,将要编译后类文件清除......
for /l %%i in (0,1,20) do (
set/p=!line:~%%i,1!
ping/n 1 127.1>nul
)
cd /d !curdir!
del build.lst >nul
echo Y|rd /s bin>nul && del /s /q /f *.class>nul 2>nul && ping/n 4 127.1>nul
echo/&echo 按任意键退出......
pause>nul
exit
:EnvAlert
cls
echo 请先安装java运行环境
ping /n 4 127.0.0.1>nul&exit[code]::创建包结构目录
:makedir
set dir=%1
cd /d !curdir!\bin
:continue
for /f "tokens=1,* delims=." %%i in ("!dir!") do (
if not exist %%i md %%i
cd %%i
set dir=%%j&goto continue
)
goto :eof