BAT脚本编写常用技巧

在平常开发中,经常会碰到使用定时任务按时跑批数据,或者其他定时操作的任务。下面就汇总整理BAT脚本编写常用的技巧:

第一:使用BAT命令替换文件中的字符串

@echo 修改ctl控制文件内容Insert为append 表名改为FP_FPXX
@echo off&setlocal enabledelayedexpansion
@rem 读取CB_FDKFPCGL_MX_sqlldr.ctl所有内容

for /f "eol=* tokens=*" %%i in (CB_FDKFPCGL_MX_sqlldr.ctl) do (

@rem 设置变量a为每行内容

set a=%%i

@rem 如果该行有INSERT,则将其改为APPEND

set "a=!a:INSERT=APPEND!"

@rem 把修改后的全部行存入$

echo !a!>>$)

@rem 用$的内容替换原来a.txt内容

move $ CB_FDKFPCGL_MX_sqlldr.ctl

 

第二:使用BAT命令操作数据SQL文件

一共分为两个部分:

一个为bat批处理文件,用于sys用户连接数据库,并用来操作数据库,这里用来导入数据;

另一个为sql文件,里面存储要执行的sql语句,这里用来删除、创建用户。
 

一、为了方便,先看sql文件:ReCreateUser.sql

-- 删除用户,如果没有该用户,第一次会报错

drop user oa cascade;

-- 重新创建用户oa/oa

create user oa identified oa;

-- 为oa用户指定默认表空间

alter user oa default tablespace users;

-- 为oa用户指定dba权限

grant dba to oa;

-- 提交

commit;

-- 退出

exit

二、bat文件:ImpDB.bat

@echo off

echo 连接数据库、重新创建用户

sqlplus sys/orcl as sysdba @ D:\ReCreateUser.sql

echo 导入数据

imp oa/oa@orcl full=y file=D:\db.dmp

echo 导入完成。

第三:使用BAT命令在一个BAT脚本中,调用其他A、B两个BAT脚本

@echo 开始执行导出数据操作

call exp_Oracle.bat

@echo 开始执行导入数据操作

call imp_Oracle.bat

 

汇总样例:

@echo off
@rem **********************************************
@rem 定时任务总调度入口
@rem 2019-03-18
@rem **********************************************

@echo off

@rem 设置路径
set EXP_PATH=%cd%
set PATH=%PATH%;%EXP_PATH%

set ctlDir=%cd%\ctl\

call exp_Oracle.bat


@echo 修改ctl控制文件内容Insert为append 表名改为FP_FPXX
@echo off&setlocal enabledelayedexpansion
@rem 读取CB_FDKFPCGL_MX_sqlldr.ctl所有内容

for /f "eol=* tokens=*" %%i in (CB_FDKFPCGL_MX_sqlldr.ctl) do (

@rem 设置变量a为每行内容

set a=%%i

@rem 如果该行有INSERT,则将其改为APPEND

set "a=!a:INSERT=APPEND!"

@rem 把修改后的全部行存入$

echo !a!>>$)

@rem 用$的内容替换原来a.txt内容

move $ CB_FDKFPCGL_MX_sqlldr.ctl

@echo 修改ctl控制文件内容Insert为append 表名改为FP_FPXX
for /f "eol=* tokens=*" %%i in (CB_FDKFPCGL_MX_sqlldr.ctl) do (

@rem 设置变量a为每行内容

set a=%%i

@rem 如果该行有CB_FDKFPCGL_MX,则将其改为FP_FPXX

set "a=!a:INTO TABLE CB_FDKFPCGL_MX=INTO TABLE FP_FPXX_BAK!"

@rem 把修改后的全部行存入$

echo !a!>>$)

@rem 用$的内容替换原来a.txt内容

move $ CB_FDKFPCGL_MX_sqlldr.ctl

@rem 读取CB_FPCGL_MX_sqlldr.ctl所有内容

for /f "eol=* tokens=*" %%i in (CB_FPCGL_MX_sqlldr.ctl) do (

@rem 设置变量a为每行内容

set a=%%i

@rem 如果该行有INSERT,则将其改为APPEND

set "a=!a:INSERT=APPEND!"

@rem 把修改后的全部行存入$

echo !a!>>$)

@rem 用$的内容替换原来CB_FPCGL_MX_sqlldr.ctl内容

move $ CB_FPCGL_MX_sqlldr.ctl

@echo 修改ctl控制文件内容Insert为append 表名改为FP_FPXX
for /f "eol=* tokens=*" %%i in (CB_FPCGL_MX_sqlldr.ctl) do (

@rem 设置变量a为每行内容

set a=%%i

@rem 如果该行有CB_FPCGL_MX,则将其改为FP_FPXX

set "a=!a:INTO TABLE CB_FPCGL_MX=INTO TABLE FP_FPXX_BAK!"

@rem 把修改后的全部行存入$

echo !a!>>$)

@rem 用$的内容替换原来a.txt内容

move $ CB_FPCGL_MX_sqlldr.ctl

@echo 开始执行导入数据操作

call imp_Oracle.bat
@echo off


pause>nul

公众号,会不定时推送一些开发中碰到的问题的解决方法,以及会分享一些开发视频。资料等。公众号里有联系方式,大家可以一起交流分享开发中遇到的问题,以及总结的经验,请大家关注一下谢谢:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李晓LOVE向阳

你的鼓励是我持续的不断动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值