记一次使用windows编写bat脚本,然后执行,报错信息如下图:
很明显这是乱码问题。
补充:如果不是乱码导致的unable to read file,有可能是job文件路径没有用双引号包裹,这个也许跟kettle版本有关。
修改之前:
修改之后:修改方法很简单这里就不教了
重新跑bat脚本:
查看日志文件:
bat脚本内容如下:
@echo off @REM 设置变量
set JOB_NAME_ZH=主营业务成本差异归集 set JOB_REP_PATH=/实际成本/主营业务成本差异归集/主营业务成本
set KITCHEN=D:\kettle\kettle71\data-integration\Kitchen.bat set C_DATE=%date:~0,4%%date:~5,2%%date:~8,2% set LOG_FOLDER=D:\kettle\ETL调度\日志%JOB_NAME_ZH% set LOG_FILE=%JOB_NAME_ZH%%C_DATE%.log
if not exist %LOG_FOLDER% ( @REM 创建目录 md %LOG_FOLDER% )
%KITCHEN% /rep kettle_repo /job %JOB_REP_PATH% /level Debug /logfile %LOG_FOLDER%%LOG_FILE% @REM %KITCHEN% /rep %REP% /job %JOB_REP_PATH% /level Debug /logfile %LOG_FOLDER%%LOG_FILE%
pause 知识储备:
1、@echo off表示执行了这条命令后关闭所有命令(包括本身这条命令)的回显。而echo off命令则表示关闭其他所有命令(不包括本身这条命令)的回显,@的作用就是关闭紧跟其后的一条命令的回显。@echo off执行以后,后面所有的命令均不显示,包括本条命令。echo off执行以后,后面所有的命令均不显示,但本条命令是显示的。
2、rem 在批处理文件或配置文件中加入注释 @ 在批处理中隐藏命令行本身的回显 @rem 表示在回显状态开启时也不显示该注释行。 当echo状态为关闭(echo off)时rem和@rem 作用相同,均无显示 当echo状态为开启(echo on )时 命令提示符后将显示出 rem注释的内容,@rem 则不显示该命令行。
BAT 批处理注释命令rem、@rem和:: 注释规则 REM 注释内容 注释内容在@echo on 时打印 注释内容在@echo off 时不打印 @REM 注释内容 注释内容在@echo on 时不打印 注释内容在@echo off 时不打印 :: 注释内容 注释内容在@echo on 时不打印 注释内容在@echo off 时不打印
3、pause也是一条命令,作用就是使程序暂停,也就是输出“请按任意键继续…”的原因。