Winodw调度bat脚本启动kettle调度不弹命令窗口实现

 Winodw执行计划调度存在的问题:

1)重复调度只支持分钟级别的,无法达到秒级
2)老是弹出cmd命令执行窗口
0

实际应用中,很多调度需要20s或者30s跑一次调度,同时调度又很多,满屏的cmd窗口,看着都烦。

改进:

①满足秒级别调度:在bat文件中使用循环达到效果,每一次循环等待20s(自定义时间)后再执行下一个调度

②消除cmd窗口:新建vbs文件,在vbs文件中调度bat文件

具体案例如下:

job_clearing_settlement.bat文件内容:

 

:loop
@echo off


@set "today_date=%date:~-10%"


@set "today=%today_date:/=%"

@set today_fmt=%today:~-4,4%%today:~-8,2%%today:~-6,2%

 

set hh=%time:~0,2%
if /i %hh% LSS 10 (set hh=0%time:~1,1%)

set today_time=%today_fmt%%hh%%time:~3,2%%time:~6,2%


set rep_name=lzsn_mex_daily_business
set job_name=job_clearing_settlement
set panpath=C:\ETL\kettle\data-integration

set logpath=C:\ETL\log\%today_fmt%\%rep_name%\%job_name%
if not exist %logpath% (
md %logpath%
)

echo start the job ...........................................
call %panpath%\kitchen.bat -rep:%rep_name% -user:admin -pass:admin -dir:/job/output/ -job:%job_name% -logfile=%logpath%\%job_name%_%today_time%.log -level:Basic
echo finish the job...........................................

 

 

TIMEOUT /T 30

goto loop

 

备注:TIMEOUT /T 30 是等待30s,可以在cmd窗口执行下试试效果。

 job_clearing_settlement.vsb文件内容:

Set shell = Wscript.CreateObject("WScript.Shell")

a = shell.run ("C:\ETL\bat\javaapi\job_clearing_settlement.bat",0)

  

然后执行运行job_clearing_settlement.vsb即可。

也可以在window执行计划中创建任务(只运行一次,不要重复执行)即可。

 

从日志可以看到,调度正常哦

0

 

存在的问题:如何停止这个调度呢?目前只能通过杀死进程方式,但是调度这么多,怎么找到该停止的进程并kill掉呢? 这个跟Linux还有点区别,再研究研究,后续跟进....

posted @ 2021-05-19 14:24  楔子  阅读(541)  评论(0)    收藏  举报