shell script & batch - 특정 폴더 내 파일 순차 실행
#!/bin/bash
echo "*************************************************"
echo ""
echo " UPDATE ADMIN SCHEMA"
echo ""
echo "*************************************************"
echo "[`date +'%Y-%m-%d %H:%M:%S'`] Start" 2>&1 | tee --append updateSchema.log
lib_path="../lib"
src_sqltool_jar="${lib_path}/sqltool-2.0.0.jar"
src_hsqldb_jar="${lib_path}/hsqldb-2.3.1.jar"
target_sqltool_jar="./sqltool.jar"
target_hsqldb_jar="./hsqldb.jar"
jar_count=`ls 2>/dev/null | grep '\.jar$' | wc -l`
if test $jar_count -eq 0
then
echo "Setup..."
echo "Copy Jar File"
echo "${src_sqltool_jar} -> ${target_sqltool_jar}"
cp ${src_sqltool_jar} ${target_sqltool_jar}
echo "${src_hsqldb_jar} -> ${target_hsqldb_jar}"
cp ${src_hsqldb_jar} ${target_hsqldb_jar}
fi
rc=./sqltool.rc
target=../classes/script/sql/hsql/update
files=${target}/*.sql
count=`ls ../classes/script/sql/hsql/update 2>/dev/null | grep '\.sql$' | wc -l`
if test $count -eq 0
then
echo "[`date +'%Y-%m-%d %H:%M:%S'`] not exist update sql" 2>&1 | tee --append updateSchema.log
else
for f in $files
do
echo "Execute Sql : $f" 2>&1 | tee --append updateSchema.log
java -Dfile.encoding=UTF-8 -jar ${target_sqltool_jar} --debug --autoCommit --rcfile ${rc} admin ${f} 2>&1 | tee --append updateSchema.log
echo "Move File ${f} -> ${f}.done"
mv $f $f".done"
done
fi
echo "[`date +'%Y-%m-%d %H:%M:%S'`] Finish" 2>&1 | tee --append updateSchema.log
- 파일 출력 및 화면 출력 동시 처리
- command 2>&1 | tee --append <filename>
- 특정 폴더 내 파일 개수
- count=`ls ../classes/script/sql/hsql/update 2>/dev/null | grep '\.sql$' | wc -l`
- 특정 폴더 내 파일을 Array로 가져오기
- files=${target}/*.sql
- 데이트 포맷 YYYY-MM-DD HH-MM-SS
- `date +'%Y-%m-%d %H:%M:%S'`
=_=; 또 까먹고 또 찾고 만들겠지만...일단 정리
헉...배치 파일 까지 만들라는 요청이 있어 =_=;
동일한 로직으로 작성 ㅠㅠ
헉...배치 파일 까지 만들라는 요청이 있어 =_=;
동일한 로직으로 작성 ㅠㅠ
@echo off
PUSHD %~DP0
set log_file=.\updateSchema.log
echo *************************************************
echo * *
echo * UPDATE ADMIN SCHEMA *
echo * *
echo *************************************************
set str=[%date% %time%] Start
call:printAndLog "%str%", "%log_file%"
set lib_path=..\lib
set src_sqltool_jar=%lib_path%\sqltool-2.0.0.jar
set src_hsqldb_jar=%lib_path%\hsqldb-2.3.1.jar
set target_sqltool_jar=.\sqltool.jar
set target_hsqldb_jar=.\hsqldb.jar
if exist *.jar goto JAR_COPY_DONE
echo Setup...
echo Copy Jar File
echo Copy "%src_sqltool_jar%" To "%target_sqltool_jar%"
copy %src_sqltool_jar% %target_sqltool_jar%
echo Copy "%src_hsqldb_jar%" To "%target_hsqldb_jar%"
copy %src_hsqldb_jar% %target_hsqldb_jar%
:JAR_COPY_DONE
set rc=.\sqltool.rc
set target=..\classes\script\sql\hsql\update
set file_format=*.sql
if not exist %target%\%file_format% (call:printAndLog "[%date% %time%] Not exist SqlFile","%log_file%" & goto END)
for /f "tokens=1,2 delims=," %%A in ('forfiles /P %target% /M %file_format% /C "cmd /c echo @path,@file"') do call:runSql "%%~A", "%%~B"
:END
set str=[%date% %time%] Finish
call:printAndLog "%str%" "%log_file%"
pause
goto:eof
:printAndLog
echo %~1
echo %~1 >> %~2
goto:eof
:runSql
set sqlPath=%~1
set sqlFile=%~2
set sqlPath=%sqlPath: =%
set sqlFile=%sqlFile: =%
call:printAndLog "[%date% %time%] Execute Sql : %sqlPath%", %log_file%
call java -Dfile.encoding=UTF-8 -jar %target_sqltool_jar% --debug --autoCommit --rcfile %rc% admin %sqlPath%
if errorlevel 1 call:printAndLog "[%date% %time%] Failed run script [%sqlPath%]", %log_file%
echo move %sqlFile% to %sqlFile%.done
rename %sqlPath% %sqlFile%.done
goto:eof
PUSHD %~DP0
set log_file=.\updateSchema.log
echo *************************************************
echo * *
echo * UPDATE ADMIN SCHEMA *
echo * *
echo *************************************************
set str=[%date% %time%] Start
call:printAndLog "%str%", "%log_file%"
set lib_path=..\lib
set src_sqltool_jar=%lib_path%\sqltool-2.0.0.jar
set src_hsqldb_jar=%lib_path%\hsqldb-2.3.1.jar
set target_sqltool_jar=.\sqltool.jar
set target_hsqldb_jar=.\hsqldb.jar
if exist *.jar goto JAR_COPY_DONE
echo Setup...
echo Copy Jar File
echo Copy "%src_sqltool_jar%" To "%target_sqltool_jar%"
copy %src_sqltool_jar% %target_sqltool_jar%
echo Copy "%src_hsqldb_jar%" To "%target_hsqldb_jar%"
copy %src_hsqldb_jar% %target_hsqldb_jar%
:JAR_COPY_DONE
set rc=.\sqltool.rc
set target=..\classes\script\sql\hsql\update
set file_format=*.sql
if not exist %target%\%file_format% (call:printAndLog "[%date% %time%] Not exist SqlFile","%log_file%" & goto END)
for /f "tokens=1,2 delims=," %%A in ('forfiles /P %target% /M %file_format% /C "cmd /c echo @path,@file"') do call:runSql "%%~A", "%%~B"
:END
set str=[%date% %time%] Finish
call:printAndLog "%str%" "%log_file%"
pause
goto:eof
:printAndLog
echo %~1
echo %~1 >> %~2
goto:eof
:runSql
set sqlPath=%~1
set sqlFile=%~2
set sqlPath=%sqlPath: =%
set sqlFile=%sqlFile: =%
call:printAndLog "[%date% %time%] Execute Sql : %sqlPath%", %log_file%
call java -Dfile.encoding=UTF-8 -jar %target_sqltool_jar% --debug --autoCommit --rcfile %rc% admin %sqlPath%
if errorlevel 1 call:printAndLog "[%date% %time%] Failed run script [%sqlPath%]", %log_file%
echo move %sqlFile% to %sqlFile%.done
rename %sqlPath% %sqlFile%.done
goto:eof
- 변수 지정
- set 변수명=값
- 파일 존재 유무
- if exist 파일포맷 goto 레이블
- 특정 디렉토리 내 파일 리스트로 만들기
- for /f "tokens=1,2 delims=," %%A in ('forfiles /P %target% /M %file_format% /C "cmd /c echo @path,@file"') do call:runSql "%%~A", "%%~B"
- 실행 후 에러 여부
- if errorlevel 1 ~~~
- 함수 만들기
- :printAndLog
echo %~1
echo %~1 >> %~2
goto:eof
댓글
댓글 쓰기