Board logo

标题: [其他] 批处理编译执行java源码 [打印本页]

作者: 小勇12    时间: 2010-1-29 13:28     标题: 批处理编译执行java源码

  1. ::添加当前目录下及其子目录下的所有jar到classpath中
  2. ::编译当前目录下及其子目录下的所有源文件
  3. ::根据源文件的包结构在bin下创建对应的目录,然后将生成的class文件放进对应的目录下
  4. @echo off&setlocal enabledelayedexpansion&&color 1f
  5. if exist build.lst del build.lst
  6. if exist bin rd /s /q bin
  7. md bin
  8. java -version
  9. if %errorlevel% neq 0 goto EnvAlert
  10. set line=TestClientTool coded by xiaoyong12
  11.     set display=
  12.     for /l %%i in (0,1,50) do (
  13.         if not !dispaly! == !line! (set display=!display!!line:~%%i,1!) else ( set display= )
  14.         title !display!
  15.         ping/n 1 127.1>nul
  16. )
  17. echo/
  18. set line=请输入主类名(如com.test.Test):
  19.     for /l %%i in (0,1,22) do (
  20.         set/p=!line:~%%i,1!<nul
  21.         ping/n 1 127.1>nul
  22. )
  23. ::添加所有jar文件到classpath中
  24. set /p class=
  25. set var=
  26. for /f %%i in ('dir /b /s %cd%') do (
  27.          if "%%~xi" == ".jar" set var=!var!%%i;
  28. )
  29. set var=!var!.;
  30. set classpath=%classpath%;!var!
  31. cls
  32. ::编译所有java源文件,如果源文件有package结构,标志为0,没有package结构,标志为1
  33. for /f %%i in ('dir /b /s %cd%') do (
  34.    if "%%~xi" == ".java" (
  35.    find "package" %%i>nul
  36.        if !errorlevel! equ 0  (
  37.        for /f "tokens=1,2 skip=2" %%j in ('find "package" %%i') do (
  38.           echo %%i  0  %%k>>build.lst
  39.            )
  40.       
  41.        ) else (
  42.           echo %%i 1 >>build.lst
  43.      )
  44.   )
  45.    
  46. )
  47. set curdir=%cd%
  48. for /f "tokens=1,2,3" %%i in (build.lst) do  (
  49. if %%j equ 1 (
  50.                javac %%i
  51.                if !errorlevel! neq 0 ( echo %%i文件编译发生错误>>error.lst ) else (
  52.                 move "%%~dpni.class" "!cd!\bin"  )
  53.                   ) else  (
  54.                javac %%i
  55.                if !errorlevel! neq 0 ( echo %%i文件编译发生错误>>error.lst ) else (
  56.                set package=%%k
  57.                set package=!package:;=!
  58.                call :makedir !package!
  59.                set package=!package:.=\!
  60.                move "%%~dpni.class" "!curdir!\bin\!package!"
  61.                cd /d !curdir!
  62.               )
  63.            )
  64. )
  65. cd /d !curdir!
  66. copy  *.xml  !curdir!\bin >nul 2>nul
  67. copy  *.properties  !curdir!\bin >nul 2>nul
  68. cd /d !curdir!/bin
  69. java  %class%
  70. if %errorlevel% equ 0 goto stopped  else (
  71. pause>nul )
  72. :alert
  73. cls
  74. for /l %%i in (1,1,8) do (
  75. echo.
  76. )
  77. echo 请确保%class%.java文件在当前目录下,并且所引用的所有jar包在当前/lib目录下,重新执行!
  78. ping /n 4 127.0.0.1>nul&exit
  79. :stopped
  80. ping/n 3 127.1>nul&echo/
  81. set line=执行结束,将要编译后类文件清除......
  82.     for /l %%i in (0,1,20) do (
  83.         set/p=!line:~%%i,1!<nul
  84.         ping/n 1 127.1>nul
  85. )
  86. cd /d !curdir!
  87. del build.lst >nul
  88. echo Y|rd /s bin>nul && del /s /q /f *.class>nul 2>nul && ping/n 4 127.1>nul
  89. echo/&echo 按任意键退出......
  90. pause>nul
  91. exit
  92. :EnvAlert
  93. cls
  94. echo 请先安装java运行环境
  95. ping /n 4 127.0.0.1>nul&exit[code]::创建包结构目录
  96. :makedir
  97. set dir=%1
  98. cd /d !curdir!\bin
  99. :continue
  100. for /f "tokens=1,* delims=." %%i in ("!dir!") do (
  101. if not exist %%i  md %%i
  102. cd %%i
  103. set dir=%%j&goto continue
  104. )
  105. goto :eof
复制代码

作者: yslyxqysl    时间: 2010-1-29 13:40

请加code标签




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2