将以下代码保存为文本文件,并命名为【launcher.bat】
然后可以将launcher.bat放置到任何包含mian的Java文件目录,可以实现执行
实现的特性:
1、判断当前目录是否存在java文件、class文件
2、判断class文件的数目:
单个文件可以支持直接运行
多个文件支持选择运行
3、对用户输入做BUG控制
前提条件:JDK,并配置环境变量;编写的java文件的默认编码格式为UTF-8
@echo off
@title 自动运行java程序(通用版V1.0)
rem 自动寻找当前目录的java和class文件并自动实现编译和运行
rem Author:Weigeli
rem Time:2016-05-30
:start
rem 判断class文件是否存在
if exist .\*.class goto check
rem class不存在,再检测java文件是否存在
if exist .\*.java goto compile
rem clas文件和java文件都不存在,提示并退出
echo 【提示】没有找到可执行的java和class文件
goto exit
rem 编译
:compile
javac *.java -encoding utf-8
goto start
rem 判断class文件数目
:check
SETLOCAL ENABLEDELAYEDEXPANSION
::统计class文件的数目
for /f %%i in ('dir /b *.class') do (
set /a count+=1
if !count!==1 set execfile=%%i
)
if %count%==1 (goto exec)
echo 根目录文件夹中包含的class文件数超过一个,请指定要执行的主程序。
echo 建议:根目录只存放唯一的主程序class文件,其他class文件使用文件夹包裹。
echo 【请选择主程序】
::循环打印所有文件,以供用户选择
for /f %%a in ('dir /b *.class') do (
set /a num+=1
set name=%%a
echo [!num!] !name:.class=!
)
:input
::循环,确认用户选择的文件是哪一个
set /p inputnum=输入数字编号:
::判断输入是否为数字
::EQU - 等于 NEQ - 不等于 LSS - 小于 LEQ - 小于或等于 GTR - 大于 GEQ - 大于或等于
echo %inputnum%|findstr "[^0-9]"&&(
echo error:输入格式有误!
goto input
)||(
::大于上限
if %inputnum% GTR %count% (
echo error:超出选项范围!
goto input
)
::小于下限
if %inputnum% LEQ 0 (
echo error:超出选项范围!
goto input
)
::正确
for /f %%b in ('dir /b *.class') do (
set /a filenum+=1
if !filenum!==!inputnum! set execfile=%%b
)
)
rem 执行class
:exec
set execfile=%execfile:.class=%
echo ==================JAVA==================
java %execfile%
echo ==================END===================
goto exit
rem 退出
:exit
::输出空行
echo.
ENDLOCAL
pause
exit