欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

用批处理写的:数据库备份还原工具 博客分类: 批处理 OraclesubversionSQL ServerCC++ 

程序员文章站 2024-03-21 15:57:58
...

由于平时要进行数据库的备份和还原操作,为了提高效率和节省时间就有了下面的批处理程序,这是针对oracle编写的,可以用在不同的电脑上,因为它会自动读取当前电脑的环境变量,从而取得oracle的安装路径,唯一有一点不足的地方是程序中运行过程中会产生一个中间文本文件,不过这并不碍大事,备份或者还原完了以后将会自动删除产生文本文件,代码如下:

@echo off&setlocal enabledelayedexpansion
color 0a
:start
for /f "tokens=2 delims==" %%a in ('path') do (
    set "str=%%a"
    set str=!str: =+!
    for %%i in (!str!) do (
        set "var=%%i"
        set var=!var:+= !
        echo !var!>>change.txt
	for /f "delims=" %%i in ('findstr "Db_1\bin" change.txt') do set var=%%i
    )
    
)

set /p choice=1.备份 2.还原 3.按任意键退出:
if %choice%==1 goto exp
if %choice%==2 goto imp
:exp
del /q change.txt
set /p file=请输入备件数据库的文件名:
set /p path=请输入存放的路径(记得输冒号:):
"%var%"\exp.exe smhr/smhr@orcl file=%path%\%file% full=n
set /p choice=1.继续 2.按任意键退出:
if %choice%==1 goto start
:imp
del /q change.txt
set /p file=请将要导入的数据库文件拖入窗体内:
"%var%"\imp.exe smhr/smhr@orcl file=%file% full=y
set /p choice=1.继续 2.按任意键退出:
if %choice%==1 goto start

 

 要注意代码中的@orcl 如果你的电脑上只有一个数据库,那么这个写不写是不碍事的,但是如果有两个数据那么这个是必须得写的,否则会出现用户名密码失败。

 

今天(2010.07.15)又再次看了看,以前写过的这个批处理,发现了一些问题,以前考虑的是环境变量中的第一条路径是oracle的,可是在我现在工作的电脑上的环境变量是这样的

e:\Oracle\product\10.1.0\Client_1\bin;e:\Oracle\product\10.1.0\Client_1\jre\1.4.2\bin\client;e:\Oracle\product\10.1.0\Client_1\jre\1.4.2\bin;e:\oracle\product\10.1.0\Db_1\bin;e:\oracle\product\10.1.0\Db_1\jre\1.4.2\bin\client;e:\oracle\product\10.1.0\Db_1\jre\1.4.2\bin;E:\Python26;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files\Microsoft SQL Server\80\Tools\BINN;E:\Program Files\Subversion\bin;C:\Program Files\Common Files\Thunder Network\KanKan\Codecs

 

看到了吧前面的并不是我们想要的,我写的这个批处理真正需要的是以下这行路径

e:\oracle\product\10.1.0\Db_1\bin

 所以需要将原代码中的

for /f "delims=" %%i in ('findstr "oracle" change.txt') do set var=%%i

 

改为

for /f "delims=" %%i in ('findstr "Db_1\bin" change.txt') do set var=%%i

 这样以来,就能适应任何环境的主机了,因为我们查询的是Db_1\bin