我们通常用的工业软件,其配置文件通常是通过非加密方式存放的,我们可以通过直接修改配置文件,去连接不同的测试/生产环境,但是每次切换都要重复改来改去,还是挺麻烦的,这个时候我们可以用bat批处理来实现一键切换!
比如我们单位某个ERP软件,通过读取tnsname.ora来连接不同的局点数据库,那么我们就想是不是可以这样,当我们切换到一个局点时,tnsname.ora指向该局点,而另外一个局点的tnsname.ora重命令为old文件,当我们需要切换另外一个局点的时候,我们把当前的tnsname.ora重命名为old文件,并把原来的old文件重命名为tnsname.ora,说干就干!
我们的admin下有两个tnsname.ora文件,分别为洛阳和孟津,用tnsname-ly.ora和tnsname-mj.ora来区分。
当我们要切换洛阳时候:
将以下内容保存为 洛阳.bat
@echo off
rem 关闭回显示,就是不显示命令本身,只显示命令执行的结果
rem ren即rename 重命名(注意 rem 和 ren是两个命令哈)
ren tnsnames.ora tnsnames-mj.ora 2
ren tnsnames-ly.ora tnsnames.ora 2
rem timeout 5 exit即等待5s退出,echo后边的空格是为了保证右对齐
echo. &&echo 已切换为洛阳 &&echo. &&echo powered by 东哥 &&timeout /t 5 /nobreak &&exit
保存后,双击执行,则切换到洛阳局点
其中,ren = rename 重命名,rem = remark 注释,如果要切换为孟津,我们只需要将tnsnames-ly,改成tnsnames-mj就可以了。
这里只考虑两个局点的情况,如果局点比较多,我们还是要用 开关 选择 比较好
保存如下脚本为 choice.bat
@echo off
rem @echo off 关闭回显示,就是不显示命令本身,只显示命令执行的结果
:rechoice
::接收键盘输入并存储在变量choice中,::和rem都可以行注释
set /p choice=请选择 : 1 洛阳 2 孟津
if "%choice%"=="1" (
rem ren即rename 重命名(注意 rem 和 ren是两个命令哈)
ren tnsnames.ora tnsnames-mj.ora
ren tnsnames-ly.ora tnsnames.ora
rem timeout 5 exit即等待5s退出,echo后边的空格是为了保证右对齐
echo. &&echo 已切换为洛阳 &&echo. &&echo powered by 东哥 &&timeout /t 5 /nobreak &&exit
) else if "%choice%"=="2" (
ren tnsnames.ora tnsnames-ly.ora
ren tnsnames-mj.ora tnsnames.ora
echo. &&echo 已切换为孟津 &&echo. &&echo powered by 东哥 &&timeout /t 5 /nobreak &&exit
) else (
echo "输入错误,请重新选择!" && goto rechoice
)
我们双击执行,则进入选择界面,选择2,切换为孟津,并在5s后退出cmd窗口,admin文件夹里边也没有了mj局点的配置文件了
如果选择3(非1或2),则会提示选择错误,请重新选择!
如果我们已经是洛阳局点,仍然选择洛阳,则会提示错误“存在一个重名文件或找不到文件”,这个是因为我们有-ly后缀的文件已经不存在了,ren命令找不到源文件,这个时候我们可用用2> nul ,将标准错误舍弃(0标准输入,1标准输出,2标准错误)即
ren tnsnames.ora tnsnames-mj.ora 2> nul
ren tnsnames-ly.ora tnsnames.ora 2> nul
当然我们也可以用cp -f ,把文件强制更新为新名称,或者先判断当前局点是哪个局点,如果正好是要切换的局点,则提示并退出。
如果我们每个局点的环境比较独特且复杂,我们尽量是每个局点保存一个bat文件,然后在choice.bat中启动被选择的bat文件,唤起方法为
call xxx.bat