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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章