博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Bat脚本学习-5:Oracle自动备份还原脚本
阅读量:4489 次
发布时间:2019-06-08

本文共 3498 字,大约阅读时间需要 11 分钟。

搜了一下,原来是网上的脚本。。。

http://www.tomcatapache.cn/arch/backup/30296915548053298606.html

还是一段段去写注释和理解

::进入管理程序REM goto直接跳转REM %1表示bat的第一个参数,如xx.bat abc,其中abc就是%1if "%1"=="" goto init::检查exp命令是否可用REM 冒号后面的,表示程序跳转点,配合goto用的:checkexpREM %XX%这种都是全局变量set resultFile=%temp%\%random%.txtREM 如果存在就删除,且不提示del %resultFile% /q>nul 2>nulREM 调用exp进行Oracle的备份,语法:exp 用户名/密码@数据库,并把结果写到resultFileexp a/a@a%random% file=%temp%\%random%.dmp >nul 2>%resultFile%REM 如果有提示无此命令,则显示相应错误提示并退出if exist %resultFile% (  type %resultFile%|find "'exp' 不是内部或外部命令">nul  if !errorlevel!==0 (    del %resultFile%>nul    echo exp命令不可用!程序即将退出!        REM ping -n 10表示ping 10次,127.1表示127.0.0.1的缩写。    REM 此处ping本机又不显示结果,其作用貌似是为了延迟几秒,便于显示文本?    ping -n 10 127.1 >nul 2>nul    exit  )  del %resultFile%>nul)::1.数据库备份REM title是bat程序的标题栏,echo.表示换行title 备份进程echo.echo.echo 一、正在进行备份……for %%i in (1,2,3,4,5,6,7,8,9) do (    set ora[%%i]>nul 2>nul&& (        set ora_cur=                REM 如果for in后面的是命令,则需要用英文后引号(即`这个符号)将其括起来        for /f "usebackq delims==. tokens=1-3" %%a in (`set ora[%%i]`) do set ora_cur=%%b                set ora_usr=        set ora_net=        for /f "delims=/" %%a in ('echo !ora_cur!') do set ora_usr=%%a        for /f "delims=@ tokens=2" %%a in ('echo !ora_cur!') do set ora_net=%%a                echo.        echo.        echo     %%i.正在备份 !ora_usr!/******@!ora_net!……        md !bak_dir!\!ora_net!__!ora_usr!\ >nul 2>nul                REM %time: =0%可获取当前时间,格式:时:分:秒:毫秒,均为2位,不足补0        set ftmr=!time: =0!        set bak_cur_dir=!bak_dir!\!ora_net!__!ora_usr!\        for /f "tokens=*" %%x in ("!bak_cur_dir!") do set bak_cur_dir=%%~fx                REM 取年份:echo %date:~0,4%         REM 取月份:echo %date:~5,2%         REM 取日期:echo %date:~8,2%         REM 取星期:echo %date:~10,6%         REM 取小时:echo %time:~0,2%         REM 取分钟:echo %time:~3,2%         REM 取秒:echo %time:~6,2%         REM 取毫秒:echo %time:~9,2%                REM %x:~m,n%  从第m个字符到第n个字符之间的字串,不包含第n个字符 m~n字符        set bak_cur_fnm=!ora_net!__!ora_usr!__!date:~0,4!!date:~5,2!!date:~8,2!-!ftmr:~0,2!!ftmr:~3,2!        set bakfile=!bak_cur_dir!!bak_cur_fnm!.dmp        set logfile=!bak_cur_dir!!bak_cur_fnm!.log        exp !ora_cur! file="!bakfile!" log="!logfile!"                REM 使用>nul不在屏幕上输出,如果只是为了注释代码,此处echo改为REM比较好        echo 如果备份成功的话,就进行压缩>nul        if exist "!bakfile!" (            REM pushd:保存当前目录以供 POPD 命令使用,然后改到指定的目录            REM pushd c:就是记录下c盘,当你转去E盘后用popd就可以转回c盘            pushd !bak_cur_dir!                        set zipfile=            if exist "%ProgramFiles%\winrar\winrar.exe" (                echo 使用WinRAR进行压缩>nul                set zipfile=!bak_cur_fnm!.rar                "%programfiles%\winrar\winrar" a -r "!zipfile!" "!bak_cur_fnm!.dmp" "!bak_cur_fnm!.log"            ) else (                echo 使用ZIP指令进行压缩>nul                set zipfile=!bak_cur_fnm!.zip                zip "!zipfile!" "!bak_cur_fnm!.dmp" "!bak_cur_fnm!.log">nul            )            if exist "!zipfile!" (                REM del 删除                  REM /P 删除每一个文件之前提示确认。                  REM /F 强制删除只读文件。                  REM /S 从所有子目录删除指定文件。                  REM /Q 安静模式。删除全局通配符时,不要求确认。                  REM /A 根据属性选择要删除的文件                del /q "!bakfile!"                del /q "!logfile!"            )                        REM 与前面的pushd对应            popd        ) else (            echo 如果不存在备份文件,但有日志文件,则删除日志文件>nul            if exist "!logfile!" del /q "!logfile!"        )    ))

 

转载于:https://www.cnblogs.com/liuyouying/p/7144061.html

你可能感兴趣的文章
初识 python
查看>>
人工智能深度学习框架MXNet实战:深度神经网络的交通标志识别训练
查看>>
PCL Examples
查看>>
git基本操作总结
查看>>
mplayer-ww-37356 compile with mingw gcc 4.5.1 修复无法播放wmv
查看>>
jQuery 追加元素的方法如append、prepend、before,after(转)
查看>>
SKAction类
查看>>
spring boot
查看>>
浏览器URL传参最大长度问题
查看>>
学习进度条
查看>>
Linux crontab 定时任务详解
查看>>
string成员函数
查看>>
onSaveInstanceState()方法问题
查看>>
[转]CocoaChina上一位工程师整理的开发经验(非常nice)
查看>>
大数据时代侦查机制有哪些改变
查看>>
L1-047 装睡
查看>>
雷林鹏分享:jQuery EasyUI 菜单与按钮 - 创建链接按钮
查看>>
Apache Traffic Server服务搭建
查看>>
poj1990两个树状数组
查看>>
学习python-day1
查看>>