컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Wednesday, November 15, 2006

Java/자바] 소스 컴파일 + 실행하기, 자동 배치파일(BAT)


jv.bat 이라는 배치파일로, 도스창(명령 프롬프트; cmd.exe)에서, 자바 소스의 컴파일과 실행을 동시에 할 수 있습니다.

자바를 커맨드라인에서 컴파일하고 실행하려면, 확장자를 붙이고 떼고 참 번거롭습니다. 그래서 이런 배치 파일을 만들었습니다.


자바 소스 컴파일한 후, 자동 실행하는 배치파일(BAT)


파일명: jv.bat
※ 아래 박스 클릭 후, 키보드 화살표 키로 좌우 스크롤 가능함
@echo off
setlocal

:: 상수 정의
set JAVA_CLASS_LIB=D:\myhome\java




:: 옵션 해석 (대소문자 구분함)
if "%1" == "-h"     goto HELP
if "%1" == "-help"  goto HELP
if "%1" == "--help" goto HELP

if "%1" == "-cc" goto CLASS_COMPILE
if "%1" == "-foo" goto FOO

if "%1" == "" (
  if not exist Foo.java goto HELP
  set FILE_NAME=Foo
) else (
  set FILE_NAME=%~n1
)


:: 컴파일
javac %FILE_NAME%.java


:: 컴파일 때 에러 있으면 종료
if not "%ERRORLEVEL%" == "0" (
  echo jv.bat: ERROR!
  goto :EOF
)


:: 컴파일된 자바 프로그램을 실행
:: 자바 프로그램에 최대 10개의 파라미터만 지정 가능한 한계 있음
shift
shift
java %FILE_NAME% %0 %1 %2 %3 %4 %5 %6 %7 %8 %9
goto QUIT




:HELP
echo.
echo ........................................................................
echo            [자바 소스 컴파일과 실행을 동시에 하는 배치 파일]
echo                                            https://mwultong.blogspot.com/
echo ........................................................................
echo.
echo 사용법: jv ^<자바 소스 파일명^>
echo 예  제: jv MyTest
echo.
echo 파일명의 대소문자를 구분함. 확장자는 붙이지 않아도 됨
echo.
echo 만약 파일명을 지정하지 않으면 기본값으로, Foo.java 를 컴파일
echo Foo.java 가 '현재 디렉토리'에 없으면, 이 도움말이 출력됨
echo.
echo.
echo.
echo 옵션 (대소문자 구분):
echo.
echo        -cc  : 클래스 라이브러리를 컴파일/재컴파일
echo        -foo : 테스트용으로 사용할 Foo.java 파일을 자동으로 생성.
echo               예제: jv -foo
echo.
echo ........................................................................
echo.
goto QUIT




:: 테스트용으로 사용할 Foo.java 파일을 자동으로 만들기
:FOO
if not exist Foo.java goto FOO_MAKE
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:LOOP
set /p YN=Foo.java already exist. overwrite (Y/N)?

if /i "%YN%" == "y" goto FOO_MAKE
if /i "%YN%" == "n" goto :EOF

goto LOOP
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:FOO_MAKE
echo public class Foo {> Foo.java
echo   public static void main(String[] args) {>> Foo.java
echo     System.out.println("테스트");>> Foo.java
echo   }>> Foo.java
echo }>> Foo.java
echo.>> Foo.java
goto QUIT




:: 클래스 라이브러리를 컴파일/재컴파일
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:CLASS_COMPILE
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
cd /d %JAVA_CLASS_LIB%
javac -verbose *.java
if not "%ERRORLEVEL%" == "0" (
  echo jv.bat: LIB COMPILE ERROR!
  goto :EOF
)
goto QUIT




:QUIT

rem 자바 소스 "파일명"과 같은 파일이 소문자로 현재 디렉토리에 있으면 에러가 나는 한계
rem jv Foo 로 실행할 때, Foo.java 외에, foo 라는 파일이 있으면
rem %~n1 에, 대문자가 아닌 소문자로 foo 가 입력되어 에러




위의 배치파일 사용법


jv MyTest

라고 하면, MyTest.java 라는 파일을 컴파일하고 에러가 없을 경우에는 곧바로 실행합니다. (jv MyTest.java 라고 확장자를 붙여도, 확장자를 자동으로 처리합니다.)


만약 MyTest 라는 프로그램이 "실행시 옵션"을 필요로 한다면

jv MyTest 111 222 333

이런 식으로 하면 됩니다. (▶▶ Java/자바] main()의 String args[] 배열 용도, 사용법 예제 참고)




그냥 jv 라고 치면, 기본값으로 Foo.java 라는 파일을 컴파일하고 실행합니다. Foo.java 라는 파일이 현재 디렉토리에 없다면, 도움말을 출력합니다. 다만, Foo 라는 프로그램이 "실행시 옵션"을 필요로 한다면

jv Foo 111 222 333

이렇게 파일명까지 입력해 주어야 합니다.



jv -h

라고 하면 항상 도움말이 출력됩니다.


그 외에 기타 잡다한 기능도 있습니다.





블로거 에러 때문에, 3시간 전에 올린 포스트가 지금에야 블로그에 나타났습니다.




tag: java
자바 | Java
tag: batch
배치파일 | DOS CMD BATCH .BAT | VBScript .VBS

0 Comments:

Post a Comment

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top