一:批处理文件(.bat文件)
@echo on
set str_time_first_bit="%time:~0,1%"
if %str_time_first_bit%==" " (
set str_date_time=%date:~0,4%%date:~5,2%%date:~8,2%0%time:~1,1%
)else (
set str_date_time=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%
)
set logName=%str_date_time%.log
set backdir="D:\ETL\Log\Main"
if not exist %backdir% md %backdir%
rem pdi开始抽取数据
rem %backdir%\%logName%
cd \
d:
cd D:\KETTLE\data-integration
kitchen.bat /file:D:\ETL_CP\ETL_MAIN_JOB.kjb /level:Basic >%backdir%\%logName%
二:命令解释
NO1-->命令@echo on命令解释
::echo off:表示在批处理文件执行过程中,只显示结果,而不显示执行的命令(不包括本命令)
::@echo off:表示在批处理文件执行过程中,只显示结果,而不显示执行的命令(包括本命令)
::echo on:表示在批处理文件执行过程中,既显示执行命令,又显示执行结果(不包括本命令)
::@echo on:表示在批处理文件执行过程中,既显示执行命令,又显示执行结果(包括本命令)
NO2-->set str_time_first_bit命令解释
set str_time_first_bit="%time:~0,1%"
if %str_time_first_bit%==" " (
set str_date_time=%date:~0,4%%date:~5,2%%date:~8,2%0%time:~1,1%
)else (
set str_date_time=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%
)
::本段目的在于生成一个表示日期的变量,为下文创建日志名做准备
::str_time_first_bit 变量的作用是判断时间的第一个字符是否为空格,这在时间为00-09的时候会出现,这时需要在前面手动加上0, 如 9:13:25
NO3-->创建文件&目录
set logName=%str_date_time%.log ::创建日志文件
set backdir="D:\ETL\Log\Main"
if not exist %backdir% md %backdir% ::创建目录
NO4-->无名
rem pdi开始抽取数据:rem表示注释命令,不执行,但能回显该命令
NO5-->切换目录&执行主程
set backdir="D:\ETL_LOG\Log\Main" ::日志文件路径
cd \ ::切换至根目录
d: ::切换至D盘
cd D:\KETTLE\data-integration ::寻找KETTLE中kitchen.bat所在路径
kitchen.bat /file:D:\ETL_CP\ETL_MAIN_JOB.kjb /level:Basic >%backdir%\%logName% ::运行kettle主程序,并打印日志
三:调度部署
win+x---->任务计划程序--->创建基本任务-->添加批处理文件