Advertisement
Guest User

Untitled

a guest
May 27th, 2017
509
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.54 KB | None | 0 0
  1. @ECHO OFF
  2. REM QBFC Project Options Begin
  3. REM HasVersionInfo: No
  4. REM Companyname: BlueTi
  5. REM Productname: ScriptBackup2.1
  6. REM Filedescription:
  7. REM Copyrights:
  8. REM Trademarks:
  9. REM Originalname:
  10. REM Comments:
  11. REM Productversion: 02.01. .
  12. REM Fileversion: 02.01. .
  13. REM Internalname:
  14. REM Appicon: Icon_27.ico
  15. REM AdministratorManifest: No
  16. REM QBFC Project Options End
  17. ECHO ON
  18. @ECHO OFF
  19. set final=0
  20. ::===============================================================================
  21. ::CONFIGURAÇÕES DE AMBIENTE
  22. ::-------------------------------------------------------------------------------
  23. ::Lendo arquivo de parametro
  24. for /f "tokens=1,2 delims==" %%a in (ScriptBackup.ini) do (
  25. if %%a==Empresa set Empresa=%%b
  26. if %%a==Banco set Banco=%%b
  27. if %%a==Servidor set Servidor=%%b
  28. if %%a==LocalBkp set LocalBkp=%%b
  29. if %%a==LocalLog set LocalLog=%%b
  30. if %%a==mail set Mail=%%b
  31. )
  32. ::===============================================================================
  33. ::CRIANDO PASTAS
  34. ::===============================================================================
  35. IF NOT EXIST "%LocalBkp%" (
  36. MD "%LocalBkp%"
  37. )
  38. IF NOT EXIST "%LocalLog%" (
  39. MD "%LocalLog%"
  40. )
  41. ::===============================================================================
  42. :: EFETUANDO TESTES DE SENHA PARA O BANCO E IDENTIFICANDO VERSAO DO BANCO
  43. ::===============================================================================
  44. ::-------------------------------------------------------------------------------
  45. ::GERANDO SCRIPT SQL DE TESTE
  46. ::-------------------------------------------------------------------------------
  47. IF EXIST %LocalBkp%\senha.sql DEL %LocalBkp%\senha.sql /Q
  48. @ECHO quit >>%LocalBkp%\senha.sql
  49. ::-------------------------------------------------------------------------------
  50. :: Verifica Senha do Banco
  51. ::-------------------------------------------------------------------------------
  52.  
  53. SET codigo=triggerBlue
  54.  
  55. :senha1
  56. SQLCMD -S %Servidor% -U sa -P %codigo% -i %LocalBkp%\senha.sql >>%LocalBkp%\senha.txt
  57.  
  58. goto :senha1a
  59.  
  60. :senha2
  61. SQLCMD -S %Servidor% -U sa -P %codigo% -i %LocalBkp%\senha.sql>>%LocalBkp%\senha.txt
  62. goto :senha2a
  63.  
  64. :senha3
  65. SQLCMD -S %Servidor% -U sa -P %codigo% -i %LocalBkp%\senha.sql>>%LocalBkp%\senha.txt
  66. goto :senha3a
  67.  
  68.  
  69. :senha1a
  70.  
  71. IF %ERRORLEVEL% EQU 1 ( SET codigo=linkBlue30
  72. goto :senha2
  73. ) ELSE IF %ERRORLEVEL% LSS 1 ( goto :senhaf
  74. )
  75.  
  76. :senha2a
  77. IF %ERRORLEVEL% EQU 1 ( SET codigo=estadao
  78. goto :senha3
  79. ) ELSE IF %ERRORLEVEL% LSS 1 ( goto :senhaf
  80. )
  81.  
  82. :senha3a
  83. IF %ERRORLEVEL% EQU 1 SET codigo=operatorblue
  84.  
  85.  
  86. :senhaf
  87. IF EXIST %LocalBkp%\senha.sql DEL %LocalBkp%\senha.sql /Q
  88. IF EXIST %LocalBkp%\senha.txt DEL %LocalBkp%\senha.txt
  89.  
  90. ::-------------------------------------------------------------------------------
  91. ::Gerando Script SQL Para Verificar a Versão do Banco
  92. ::-------------------------------------------------------------------------------
  93. IF EXIST versao.sql (
  94. DEL versao.sql /Q
  95. )
  96. IF EXIST versao.txt (
  97. DEL versao.txt /Q
  98. )
  99.  
  100. @ECHO select >>versao.sql
  101. @ECHO Versao + VersaoRelease >>versao.sql
  102. @ECHO from TbHistAtualiz>>versao.sql
  103. @ECHO where>>versao.sql
  104. @ECHO Versao = (select MAX(Versao) from TbHistAtualiz)>>versao.sql
  105. @ECHO and VersaoRelease = (select MAX(VersaoRelease) from TbHistAtualiz>>versao.sql
  106. @ECHO where Versao = (select MAX(Versao) from TbHistAtualiz))>>versao.sql
  107.  
  108. ::-------------------------------------------------------------------------------
  109. :: Executando teste SQL Para Verificar a Versão do Banco
  110. ::-------------------------------------------------------------------------------
  111.  
  112. SQLCMD -S %Servidor% -U sa -P %codigo% -d %banco% -i "versao.sql" >>versao.txt
  113.  
  114. IF %ERRORLEVEL% EQU 1 goto :ERROLEVEL
  115.  
  116. FOR /F "skip=1 eol=( tokens=1" %%f in (versao.txt) do (set versao=%%f)
  117.  
  118. IF EXIST versao.sql (
  119. DEL versao.sql /Q
  120. )
  121. IF EXIST versao.txt (
  122. DEL versao.txt /Q
  123. )
  124. ::===============================================================================
  125. ::CONFIGURANDO O FORMATO DE HORA E DIA DE SEMANA
  126. ::===============================================================================
  127. @ECHO OFF
  128. SET hora=%time:~0,2%
  129.  
  130. IF %hora% GTR 9 ( SET hora=%time:~0,2%
  131. ) ELSE IF %hora% LSS 10 ( SET hora=%time:~1,1%
  132. )
  133. IF %hora%==1 SET hora=01
  134. IF %hora%==2 SET hora=02
  135. IF %hora%==3 SET hora=03
  136. IF %hora%==4 SET hora=04
  137. IF %hora%==5 SET hora=05
  138. IF %hora%==6 SET hora=06
  139. IF %hora%==7 SET hora=07
  140. IF %hora%==8 SET hora=08
  141. IF %hora%==9 SET hora=09
  142.  
  143.  
  144. SET ano=%date:~-4,4%
  145. SET mes=%date:~3,2%
  146. IF %mes%==01 SET mes_x=0
  147. IF %mes%==02 SET mes_x=3
  148. IF %mes%==03 SET mes_x=3
  149. IF %mes%==04 SET mes_x=6
  150. IF %mes%==05 SET mes_x=1
  151. IF %mes%==06 SET mes_x=4
  152. IF %mes%==07 SET mes_x=6
  153. IF %mes%==08 SET mes_x=2
  154. IF %mes%==09 SET mes_x=5
  155. IF %mes%==10 SET mes_x=0
  156. IF %mes%==11 SET mes_x=3
  157. IF %mes%==12 SET mes_x=5
  158.  
  159. SET dia=%date:~0,2%
  160. IF %dia%==01 SET dia=1
  161. IF %dia%==02 SET dia=2
  162. IF %dia%==03 SET dia=3
  163. IF %dia%==04 SET dia=4
  164. IF %dia%==05 SET dia=5
  165. IF %dia%==06 SET dia=6
  166. IF %dia%==07 SET dia=7
  167. IF %dia%==08 SET dia=8
  168. IF %dia%==09 SET dia=9
  169. ::-------------------------------------------------------------------------------
  170. ::VEFIFICA QUANTOS ANOS SE PASSOU DESDE 1900
  171. ::-------------------------------------------------------------------------------
  172. SET /a ano_calc=(%ano%-1900)
  173. SET /a ano_c=(%ano%-1900)/4
  174. ::-------------------------------------------------------------------------------
  175. :: Verifica se o ano atual é bissexto
  176. ::-------------------------------------------------------------------------------
  177. SET /a ano_anterior=(%ano%-1900-1)/4
  178. ::-------------------------------------------------------------------------------
  179. ::se ano atual for bissesto verifica mes
  180. ::-------------------------------------------------------------------------------
  181. IF %ano_c% NEQ %ano_anterior% ( GOTO :Verifica_mes
  182. ) ELSE IF %ano_c% EQU %ano_anterior% ( GOTO :NEXT
  183. )
  184. ::-------------------------------------------------------------------------------
  185. :: Se ano for bissexto, verifica se mes é menor que 02 fevereiro, caso positivo diminui um ano no cálculo
  186. ::-------------------------------------------------------------------------------
  187. :Verifica_mes
  188. IF %mes% LSS 03 SET /a ano_c=%ano_c%-1
  189. ) ELSE IF %mes% GTR 2 ( GOTO :NEXT
  190. )
  191.  
  192. ::-------------------------------------------------------------------------------
  193. :: Verifica Dia
  194. ::-------------------------------------------------------------------------------
  195. :NEXT
  196.  
  197. SET /a dia_c=%dia%-1
  198.  
  199. ::-------------------------------------------------------------------------------
  200. :: Calculando e encontrando dia da semana
  201. ::-------------------------------------------------------------------------------
  202. SET /a semana_c=(%ano_calc%+%ano_c%+%mes_x%+%dia_c%)/7
  203. SET /a semana=(%semana_c%)*7-(%ano_calc%+%ano_c%+%mes_x%+%dia_c%)
  204. IF %semana%==0 SET semana=Segunda
  205. IF %semana%==-1 SET semana=Terca
  206. IF %semana%==-2 SET semana=Quarta
  207. IF %semana%==-3 SET semana=Quinta
  208. IF %semana%==-4 SET semana=Sexta
  209. IF %semana%==-5 SET semana=Sabado
  210. IF %semana%==-6 SET semana=Domingo
  211.  
  212.  
  213. ::===============================================================================
  214. :: VERIFICA SE EXITE A INSTALAÇÃO DO WINRAR
  215. ::===============================================================================
  216. @IF EXIST "%ProgramFiles%\WinRAR\WinRAR.exe" (
  217. SET local_rar="%ProgramFiles%\WinRAR\WinRAR.exe"
  218. ) ELSE IF EXIST "%ProgramFiles(x86)%\WinRAR\WinRAR.exe" (
  219. SET local_rar="%ProgramFiles(X86)%\WinRAR\WinRAR.exe"
  220. ) ELSE IF NOT EXIST "%ProgramFiles(x86)%\WinRAR\WinRAR.exe" (
  221. @ECHO ===============================================================================
  222. @ECHO ATEMCAO! WINRAR NAO LOCALIZADO
  223. @ECHO ===============================================================================
  224. @ECHO PARA PROSSEGUIR PRECISA INSTALA-LO NO LOCAL PADRAO
  225. @ECHO -------------------------------------------------------------------------------
  226. @ECHO "%ProgramFiles%\WinRAR\WinRAR.exe" ou
  227. @ECHO "%ProgramFiles(x86)%\WinRAR\WinRAR.exe"
  228. @ECHO ===============================================================================
  229.  
  230. EXIT
  231. )
  232. ::===============================================================================
  233. :: INICIANDO PROCESSO DE BACKUP
  234. ::===============================================================================
  235. :: CRIANDO LOG
  236. ::-------------------------------------------------------------------------------
  237. IF EXIST %LocalLog%\%empresa%_%banco%_%versao%_%semana%_%hora%H.txt DEL %LocalLog%\%empresa%_%banco%_%versao%_%semana%_%hora%H.txt /Q
  238.  
  239. @ECHO ===============================================================================
  240. @ECHO.
  241. @ECHO BACKUP INICIALIZADO EM: %date:~0,2%/%date:~3,2%/%date:~-4,4% as %time:~0,-3%
  242. @ECHO.
  243. @ECHO ===============================================================================
  244.  
  245.  
  246. @(
  247. @ECHO Olá você está recebendo um LOG de backup, verifique se o mesmo contém erros.
  248. @ECHO Este LOG é referente à empresa: %empresa% e do banco de dados: %banco% ver. %versao%,
  249. @ECHO Foi gerado %semana% dia %dia%/%mes%/%ano% às %hora%h.
  250. @ECHO O arquivo foi gerado na pasta: %LocalBkp% no Servidor: %Servidor%.
  251. @ECHO E É DE RESPONSABILIDADE DO CLIENTE PROVIDENCIAR A CÓPIA PARA UM LOCAL SEGURO.
  252.  
  253.  
  254. )>>%LocalLog%\%empresa%_%banco%_%versao%_%semana%_%hora%H.txt
  255.  
  256.  
  257.  
  258. @(
  259. @ECHO.
  260. @ECHO ===============================================================================
  261. @ECHO.
  262. @ECHO BACKUP INICIALIZADO EM: %date:~0,2%/%date:~3,2%/%date:~-4,4% as %time:~0,-3%
  263. @ECHO.
  264. @ECHO ===============================================================================
  265.  
  266. )>>%LocalLog%\%empresa%_%banco%_%versao%_%semana%_%hora%H.txt
  267.  
  268. ::-------------------------------------------------------------------------------
  269. ::VERIFICANDO E ELEMINANDO ARQUIVOS .BAK ANTIGOS
  270. ::-------------------------------------------------------------------------------
  271. IF EXIST %LocalBkp%\%empresa%_%banco%_%versao%_%semana%_%hora%H.rar ( goto :ta
  272. ) ELSE IF NOT EXIST %LocalBkp%\%empresa%_%banco%_%versao%_%semana%_%hora%H.rar (
  273. set final=1
  274. goto :tu
  275. )
  276.  
  277. :ta
  278.  
  279.  
  280. FOR %%a in (%LocalBkp%\%empresa%_%banco%_%versao%_%semana%_%hora%H.rar) do (set /a tamanho_Rar=%%~za )
  281.  
  282. IF EXIST %LocalBkp%\%empresa%_%banco%_%versao%_%semana%_%hora%H_old.rar (
  283. DEL %LocalBkp%\%empresa%_%banco%_%versao%_%semana%_%hora%H_old.rar /Q
  284. )
  285. REN %LocalBkp%\%empresa%_%banco%_%versao%_%semana%_%hora%H.rar %empresa%_%banco%_%versao%_%semana%_%hora%H_old.rar
  286.  
  287.  
  288. :tu
  289.  
  290.  
  291. ::-------------------------------------------------------------------------------
  292. ::GERANDO SCRIPT SQL
  293. ::-------------------------------------------------------------------------------
  294. IF EXIST %LocalBkp%\script.sql ( DEL %LocalBkp%\script.sql)
  295. IF EXIST %LocalBkp%\verifica.sql ( DEL %LocalBkp%\verifica.sql)
  296. @ECHO Backup DataBase %banco% To Disk= "%LocalBkp%\%empresa%_%banco%_%versao%_%semana%_%hora%H.Bak" With NoFormat, Init, Skip, NoRewind, NoUnload, Stats = 10 >>%LocalBkp%\script.sql
  297. @ECHO RESTORE Verifyonly FROM DISK = N'%LocalBkp%\%empresa%_%banco%_%versao%_%semana%_%hora%H.Bak' >>%LocalBkp%\verifica.sql
  298. ::-------------------------------------------------------------------------------
  299. ::ACIONANDO DISPOSITIVO DE BACKUP
  300. ::-------------------------------------------------------------------------------
  301.  
  302. SQLCMD -S %Servidor% -U sa -P %codigo% -i "%LocalBkp%\script.sql" >>%LocalLog%\%empresa%_%banco%_%versao%_%semana%_%hora%H.txt
  303.  
  304. IF %ERRORLEVEL% EQU 1 goto :ERROLEVEL
  305.  
  306. ::-------------------------------------------------------------------------------
  307. ::LIMPANTO ARQUIVOS TEMPORÁRIOS
  308. ::-------------------------------------------------------------------------------
  309. IF EXIST %LocalBkp%\script.sql( DEL %LocalBkp%\script.sql /Q )
  310.  
  311. ::-------------------------------------------------------------------------------
  312. ::VERIFICA SE O ARQUIVO ESTÁ COM HORA -1
  313. ::-------------------------------------------------------------------------------
  314.  
  315. IF NOT EXIST %LocalBkp%\%empresa%_%banco%_%versao%_%semana%_%hora%H.Bak (
  316. SET /A (%hora% - 1)
  317. )
  318.  
  319. ::-------------------------------------------------------------------------------
  320. :: VERIFICANDO A INTEGRIDADE DO ARQUIVO GERADO
  321. ::-------------------------------------------------------------------------------
  322. SQLCMD -S %Servidor% -U sa -P %codigo% -i "%LocalBkp%\verifica.sql" >> validade.txt
  323.  
  324.  
  325. FOR /F "eol=( tokens=1" %%f in (validade.txt) do (set validade=%%f)
  326.  
  327. IF EXIST verifica.sql ( DEL verifica.sql /Q )
  328. IF EXIST validade.txt ( DEL validade.txt /Q )
  329.  
  330.  
  331.  
  332. IF %validade% NEQ The (goto :Menor)
  333.  
  334.  
  335. ::-------------------------------------------------------------------------------
  336. ::COMPACTANDO ARQUIVOS
  337. ::-------------------------------------------------------------------------------
  338.  
  339. CALL %local_rar% a "%LocalBkp%\%empresa%_%banco%_%versao%_%semana%_%hora%H.rar" "%LocalBkp%\%empresa%_%banco%_%versao%_%semana%_%hora%H.Bak"
  340. CALL %local_rar% t "%LocalBkp%\%empresa%_%banco%_%versao%_%semana%_%hora%H.rar"
  341.  
  342. IF %ERRORLEVEL% EQU 1 goto :ERROLEVEL
  343.  
  344. ::-------------------------------------------------------------------------------
  345. :: CHECANDO O TAMANHO DO ARQUIVO GERADO
  346. ::-------------------------------------------------------------------------------
  347.  
  348. FOR %%a in (%LocalBkp%\%empresa%_%banco%_%versao%_%semana%_%hora%H.rar) do (set /a tamanho_SQL=%%~za)
  349.  
  350. ::-------------------------------------------------------------------------------
  351. :: ELIMINANDO ARQUIVOS .BAK
  352. ::-------------------------------------------------------------------------------
  353.  
  354. IF EXIST %LocalBkp%\%empresa%_%banco%_%versao%_%semana%_%hora%H.Bak ( DEL %LocalBkp%\%empresa%_%banco%_%versao%_%semana%_%hora%H.Bak /Q )
  355.  
  356.  
  357.  
  358.  
  359.  
  360.  
  361.  
  362. :FIM
  363.  
  364.  
  365. ::-------------------------------------------------------------------------------
  366. :: REGISTRANDO INFORMAÇÕES NO LOG
  367. ::-------------------------------------------------------------------------------
  368. @(
  369. @ECHO ===============================================================================
  370. @ECHO TAMANHO DO ARQUIVO SQL GERADO E COMPACTADO = %tamanho_SQL% bytes
  371. @ECHO BACKUP FINALIZADO EM: %date:~0,2%/%date:~3,2%/%date:~-4,4% as %time:~0,-3%
  372. @ECHO.
  373. @ECHO ===============================================================================
  374. )>>%LocalLog%\%empresa%_%banco%_%versao%_%semana%_%hora%H.txt
  375.  
  376. @ECHO.
  377. @ECHO TAMANHO DO ARQUIVO SQL GERADO E COMPACTADO = %tamanho_SQL% bytes
  378. @ECHO BACKUP FINALIZADO EM: %date:~0,2%/%date:~3,2%/%date:~-4,4% as %time:~0,-3%
  379. @ECHO.
  380. @ECHO ===============================================================================
  381.  
  382. :mail
  383. ::===============================================================================
  384. ::CONFIGURAÇÕES PARA ENVIO DE E-MAIL
  385. ::-------------------------------------------------------------------------------
  386. ::Configuracoes do e-mail
  387. ::-------------------------------------------------------------------------------
  388. set remetente=backup@blueti.com.br
  389. set destinatario=%mail%
  390. set titulo=Backup %Banco%, %empresa% %semana%, %dia%/%mes%/%ano% …s %hora%h
  391. set SMTP=smtp.blueti.com.br
  392. ::-------------------------------------------------------------------------------
  393. ::Configuraçõe de autenticacao smtp
  394. ::-------------------------------------------------------------------------------
  395. set usuario=backup@blueti.com.br
  396. set senha=BlueTI001
  397. ::-------------------------------------------------------------------------------
  398. ::Configurações de envio do email
  399. ::-------------------------------------------------------------------------------
  400. @ECHO.
  401. @ECHO ENVIANDO RELATORIO POR E-MAIL
  402. @ECHO.
  403. @ECHO ===============================================================================
  404.  
  405. sendEmail.exe -f %remetente% -t %destinatario% -u %titulo% -o message-file=%LocalLog%\%empresa%_%banco%_%versao%_%semana%_%hora%H.txt -s %SMTP%:587 -xu %usuario% -xp %senha%
  406.  
  407. exit
  408. ::===============================================================================
  409.  
  410. :ERROLEVEL
  411. ::===============================================================================
  412. ::CONFIGURAÇÕES PARA ENVIO DE E-MAIL
  413. ::-------------------------------------------------------------------------------
  414. ::Configuracoes do e-mail
  415. ::-------------------------------------------------------------------------------
  416. set remetente=backup@blueti.com.br
  417. set destinatario=%mail%
  418. set titulo=BACKUP %Banco%, %empresa% ERRO AO GERAR %dia%/%mes%/%ano% …s %hora%h
  419. set SMTP=smtp.blueti.com.br
  420. ::-------------------------------------------------------------------------------
  421. ::Configuraçõe de autenticacao smtp
  422. ::-------------------------------------------------------------------------------
  423. set usuario=backup@blueti.com.br
  424. set senha= BlueTI001
  425. ::-------------------------------------------------------------------------------
  426. ::Configurações de envio do email
  427. ::-------------------------------------------------------------------------------
  428. @ECHO.
  429. @ECHO ENVIANDO RELATORIO POR E-MAIL
  430. @ECHO.
  431. @ECHO ===============================================================================
  432.  
  433. sendEmail.exe -f %remetente% -t %destinatario% -u %titulo% -o message-file=%LocalLog%\%empresa%_%banco%_%versao%_%semana%_%hora%H.txt -s %SMTP%:587 -xu %usuario% -xp %senha%
  434. EXIT
  435.  
  436. :Menor
  437. @(
  438. @ECHO ===============================================================================
  439. @ECHO ANTECAO! BACKUP NAO GERADO! FOI FEITA UMA VERIFICACAO
  440. @ECHO DE INTEGRIDADE NO ARQUIVO GERADO E O MESMO NAO FOI APROVADO
  441. @ECHO. POR FAVRO ENTRE EM CONTATO COM O SUPORTE
  442. @ECHO ===============================================================================
  443. )>>%LocalLog%\%empresa%_%banco%_%versao%_%semana%_%hora%H.txt
  444.  
  445. @ECHO ===============================================================================
  446. @ECHO ANTECAO! BACKUP NAO GERADO! FOI FEITA UMA VERIFICACAO
  447. @ECHO DE INTEGRIDADE NO ARQUIVO GERADO E O MESMO NAO FOI APROVADO
  448. @ECHO. POR FAVRO ENTRE EM CONTATO COM O SUPORTE
  449. @ECHO ===============================================================================
  450.  
  451. goto :ERROLEVEL
  452.  
  453. ::===============================================================================
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement