windows BAT脚本2个服务器间传递文件

1. 脚本功能: mysql

  实现2个服务器间文件的传递,例如从A服务器往B服务器上传文件sql

2. 实现步骤:数据库

  2.1 服务器连结,找到指定路径,读取所须要上传的文件,将文件名称复制到一个文件下服务器

    (此处考虑可能须要筛选特定的文件,或者判断文件个数,这样处理会比较方便)oracle

  2.2 执行copy文件sqlserver

  2.3 删除不须要的文件spa

    (这里考虑,多是联机备份,只保留部分数据文件,须要删除不须要的数据文件,在这处理)日志

 

3. 代码展现server

@echo offtoken

REM *** copy文件参数设定
set Passwd="password"
set User="username"
set LogPath="日志存放路径"
set FullbakPath="A服务器须要复制到B服务器的文件路径"

REM *** 数据库连结设定
   (这里作数据库连结是由于本脚本须要保留部分天数的文件,须要删除前7天文件
     由于bat单作日期加减比较麻烦,因此采用数据库取值方法)
set DB_SERVER="数据库rul"
set DB_NAME="数据库实例"
set DB_USER="数据库用户"
set DB_PASS="数据库密码"

REM *** 数据库前7日设定
REM *** 由于这里使用sqlserver 相应其余数据库请本身调整oracle mysql等
set sql="SELECT CONVERT(NVARCHAR,DATEADD(DAY,-7,CONVERT(DATETIME,CAST(YMD AS NVARCHAR),101)),112) FROM M_DATE_CONTROL WHERE KEY_CD=2"

REM *** 服务连结
net use \\127.0.0.1\backfull %Passwd% /user:%User% 

REM *** 设定日期,设定Log日志文件名称
set date=%date:~0,4%%date:~5,2%%date:~8,2%
set JOBLOG=DBBACK.log

echo ********** START (%date:~0,10% %time:~0,8%) ********** >> %LogPath%\%date%\%JOBLOG%

这里将符合的附件读取到一个文本文档中,以便后续使用
(for /f "tokens=*" %%i in ('dir /a-d /b /s %FullbakPath%\*.* ') do (
    echo %%~nxi
))>fullbak.log

这里是copy文件的主要执行步骤,从文本文档读取,而后进行copy,这里有一个文件数量的判断,能够进行自我调整
for /f "tokens=2 delims=:" %%a in ('find /c /v "" fullbak.log') do (
  if %%a equ 7 for /f %%i in (fullbak.log) do xcopy %FullbakPath%\%%i \\127.0.0.1\backfull\%date%\ /s /e /i /y
)

这里进行文件删除的操做,将7天前文件删除
for /f "skip=2" %%i in ('osql.exe -S %DB_SERVER% -U %DB_USER% -P %DB_PASS% -d %DB_NAME% -Q %sql%') do (
  set RESULT=%%i
  goto :RESULT
)

判断文件是否存在,存在就执行删除
:RESULT
if exist \\127.0.0.1\backfull\%RESULT% rd /s /q  \\127.0.0.1\backfull\%RESULT%

echo ********** END (%date:~0,10% %time:~0,8%) ********** >> %LogPath%\%date%\%JOBLOG%

pause

以上为文本文档编写,你们还请见谅。

相关文章
相关标签/搜索