批处理的运用

批处理的运用
1。XCopy部署程序。

        文件包括:Deploy.bat 和 Config.txt
                       Deploy.bat 读取Config.txt总的配置信息,运用XCopy部署程序。
                       Config.txt 保存配置的参数信息。
         文件内容:

             Config.txt :

                  D:\MyWork\localWeb
                  D:\Develop\Source\JTGL
                  *.aspx,*.js,*.asp,*.html,*.htm,*.jpg,*.css,*.gif,*.xml,*.ascx
                 *.aspx,*.js
                           
                各行参数说明: 第一行: 要部署的文件夹
                                                 第二行:  开发环境下的文件夹
                                                 第三行: 需要拷贝的文件的后缀
                                                 第四行: 快速拷贝的文件后缀。
              Deploy.bat:


                   @echo off
                   echo.
                   echo 开始检测系统的代码路径和网站安装路径......
                   setlocal enabledelayedexpansion
                   set iPos =0

:: 获取Cofig中的配置信息,写的不是很灵活.

for /f %%i in (Config.txt) do (
    set /a iPos +=1
    if !iPos! equ 1 set GsPos=%%i
    if !iPos! equ 2 set SourcePos=%%i
    if !iPos! equ 3 set Total=%%i
    if !iPos! equ 4 set Quick=%%i
)
echo.
echo 获取网站安装路径为:%GsPos%
echo.
echo 获取源代码路径为:%SourcePos%
echo.
echo 开始配置网站......
echo.
echo 开始配置程序集.....
echo.

::删除程序集
del  %GsPos%\bin\XXX.dll
::需要删除的程序集

::拷贝程序集
copy %SourcePos%\Public_Com\bin\Debug\XXX.dll %GsPos%\bin
::需要拷贝的程序集
echo.

choice /c:12  /M 请选择配置的方式(1:快速配置,2:完全配置)


::完全配置,配置Config.txt中第三行设定的所有后缀的文件
if errorlevel=2 CALL;:CopyFile;%Total%

::快速配置,配置Config.txt中第四行设定的所有后缀的文件
if errorlevel=1 CALL;:CopyFile;%Quick%
goto End

:: 拷贝的文件的子程序.
:CopyFile
 :Begin
        IF  "%1"==""   exit /b
 xcopy %SourcePos%\%1  %GsPos%\JTGL\ /s/r/y
        Shift
        GOTO Begin  
:End
echo.
echo 开始清理IE缓存文件.....

::清理缓存,不知道为什么,不管用!!郁闷!
::del /f /s /q "%userprofile%\Local Settings\Temporary Internet Files\*.* "

echo.
echo 清理IE缓存完毕!
echo.
::Pause

 2。批量执行sql语句。

      需要替换指定的文件中的参数, 如本例就是 用 2007 替换 参数 @YR@

     ExecSql.bat 文件内容:


                       @echo off
                     ::设定Sql文件所在的目录
                     setlocal enabledelayedexpansion
                     set  SqlPos=D:\Develop\Source\Sql
                    md c:\temp >nul 2>nul
                    ::获取目录下的所有txt和sql文件,暂时保存list.txt中
                    dir /o:n /b %SqlPos%\*.txt>> list.txt
                     dir /o:n /b %SqlPos%\*.sql>> list.txt

::执行sql语句
for /f %%i in (list.txt) do   (
    echo.
    echo.
    echo 正在执行的sql文件:%%i
    echo.
    echo.
    copy /b %SqlPos%\%%i c:\temp\tempsql.txt
    Call ;:Replace 
    ::  登陆sqlserver  U后面用户名 P后面密码  D后面是数据库名称
    isql  -Usa  -Pmyvpass -dmydatabase -ic:\temp\tempsql_tmp.txt
    quit >nul 2>nul
    del c:\temp\tempsql.txt
    del c:\temp\tempsql_tmp.txt
    echo.
    echo.
    echo  执行的sql完毕!
    echo.
    echo.
)
del list.txt
goto End

:Replace
 for /f "delims="  %%a in ('type c:\temp\tempsql.txt') do  (
      set str=%%a
      set "str=!str:@YR@=2007!"
      echo !str!>>c:\temp\tempsql_tmp.txt
 )
 exit /b
:End

                             Pause

posted on 2008-08-17 23:59  Sanle  阅读(182)  评论(0编辑  收藏  举报

导航