windows编写bat,执行报错unable to read file

127 阅读2分钟

​ 记一次使用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也是一条命令,作用就是使程序暂停,也就是输出“请按任意键继续…”的原因。