由于平时要进行数据库的备份和还原操作,为了提高效率和节省时间就有了下面的批处理程序,这是针对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
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
今天(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
本文转自sucre03 51CTO博客,原文链接:http://blog.51cto.com/sucre/353376,如需转载请自行联系原作者