Geral

User

System

Desenvolvimento #6192 » AJUSTE O HORÁRIO BACKUP.bat

Executável Menu de opções - TARCISIO DA ROCHA, 16/09/2026 13:06 h

 
<# :
@echo off
title Painel de Agendamentos - Hemovida
color 0F
:: Este bloco permite que o CMD rode comandos PowerShell nativos usando este mesmo arquivo
powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "Invoke-Expression (Get-Content '%~f0' -Raw)"
exit /b
#>

# ============================================================================
# CONFIGURA??ES INTOC?VEIS (Apontando para o seu .ps1 existente)
# ============================================================================
$PastaTrabalho = "C:\hemovida"
$ScriptPath = "$PastaTrabalho\Backup-Hemovida.ps1"
$ExecutavelPS = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"

# ============================================================================
# FUN??ES DE LEITURA DO AGENDADOR DO WINDOWS
# ============================================================================
function Obter-HorarioFull {
$task = Get-ScheduledTask -TaskName "Hemovida_Backup_FULL" -ErrorAction SilentlyContinue
if ($task) {
$boundary = $task.Triggers[0].StartBoundary
if ($boundary -match "T(\d{2}:\d{2})") { return $matches[1] }
}
return "Nao configurado"
}

function Obter-HorariosDiff {
$task = Get-ScheduledTask -TaskName "Hemovida_Backup_DIFERENCIAL" -ErrorAction SilentlyContinue
$lista = @()
if ($task) {
foreach ($t in $task.Triggers) {
if ($t.StartBoundary -match "T(\d{2}:\d{2})") { $lista += $matches[1] }
}
}
if ($lista.Count -eq 0) { return "Nao configurado" }
return $lista -join ", "
}

# ============================================================================
# FUN??O DE CRIA??O E ATUALIZA??O NO WINDOWS
# ============================================================================
function Criar-Tarefas {
param($HoraFull, [string[]]$HorariosDiff)
Write-Host "`n[+] Limpando tarefas antigas no Windows..." -ForegroundColor Cyan
Unregister-ScheduledTask -TaskName "Hemovida_Backup_FULL" -Confirm:$false -ErrorAction SilentlyContinue
Unregister-ScheduledTask -TaskName "Hemovida_Backup_DIFERENCIAL" -Confirm:$false -ErrorAction SilentlyContinue

$Principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest

# Registra o FULL apontando para o seu script intoc?vel
$AcaoFull = New-ScheduledTaskAction -Execute $ExecutavelPS -Argument "-ExecutionPolicy Bypass -NoProfile -WindowStyle Hidden -File `"$ScriptPath`" -TipoBackup Full" -WorkingDirectory $PastaTrabalho
$GatilhoFull = New-ScheduledTaskTrigger -Daily -At $HoraFull
Register-ScheduledTask -TaskName "Hemovida_Backup_FULL" -Action $AcaoFull -Trigger $GatilhoFull -Principal $Principal -Description "Backup Completo (Full) - Hemovida" -Force | Out-Null
Write-Host "[+] Tarefa FULL registrada para as $HoraFull" -ForegroundColor Green

# Registra os DIFERENCIAIS apontando para o seu script intoc?vel
$AcaoDiff = New-ScheduledTaskAction -Execute $ExecutavelPS -Argument "-ExecutionPolicy Bypass -NoProfile -WindowStyle Hidden -File `"$ScriptPath`" -TipoBackup Diff" -WorkingDirectory $PastaTrabalho
$Gatilhos = @()
foreach ($h in $HorariosDiff) {
$h = $h.Trim()
if ($h -match '^\d{2}:\d{2}$') {
$Gatilhos += New-ScheduledTaskTrigger -Daily -At $h
}
}
if ($Gatilhos.Count -gt 0) {
Register-ScheduledTask -TaskName "Hemovida_Backup_DIFERENCIAL" -Action $AcaoDiff -Trigger $Gatilhos -Principal $Principal -Description "Backups Parciais (Diff) - Hemovida" -Force | Out-Null
Write-Host "[+] Tarefas DIFERENCIAIS registradas com sucesso!" -ForegroundColor Green
}
}

# ============================================================================
# LOOP DO MENU INTERATIVO PARA OS OPERADORES
# ============================================================================
while ($true) {
Clear-Host
Write-Host "=====================================================" -ForegroundColor Cyan
Write-Host " PAINEL DE CONTROLE DE BACKUPS - HEMOVIDA " -ForegroundColor White
Write-Host "=====================================================" -ForegroundColor Cyan
$Full = Obter-HorarioFull
$Diff = Obter-HorariosDiff

Write-Host " ESTADO ATUAL NO AGENDADOR DO SERVIDOR:" -ForegroundColor Yellow
Write-Host " [FULL] Diario as......: $Full"
Write-Host " [DIFF] Diarios as.....: $Diff"
Write-Host "=====================================================" -ForegroundColor Cyan
Write-Host "[1] Restaurar grade PADRAO (Full: 00:30 | Diff: 10h, 12h, 14h, 16h, 18h)"
Write-Host "[2] Alterar horario do Backup FULL"
Write-Host "[3] Alterar horarios do Backup DIFERENCIAL"
Write-Host "[4] APAGAR AGENDAMENTOS (Pausar rotinas)"
Write-Host "[5] ABRIR MONITOR DE LOGS (Tempo Real)"
Write-Host "[0] Sair do Painel"
Write-Host "=====================================================" -ForegroundColor Cyan

$Opcao = Read-Host "Digite o numero da opcao desejada"

switch ($Opcao) {
"1" {
Criar-Tarefas -HoraFull "00:30" -HorariosDiff @("10:00", "12:00", "14:00", "16:00", "18:00")
Write-Host "`nGrade padrao restaurada no sistema com sucesso!" -ForegroundColor Green
Pause
}
"2" {
$NovoFull = Read-Host "`nDigite o novo horario para o Backup FULL (ex: 01:30)"
if ($NovoFull -match '^\d{2}:\d{2}$') {
$DiffAtual = (Obter-HorariosDiff) -split ","
Criar-Tarefas -HoraFull $NovoFull -HorariosDiff $DiffAtual
Write-Host "`nHorario do FULL atualizado no Windows!" -ForegroundColor Green
} else {
Write-Host "`nFormato invalido! Use o formato HH:mm (ex: 22:00)" -ForegroundColor Red
}
Pause
}
"3" {
$NovosDiffs = Read-Host "`nDigite os horarios DIFERENCIAIS separados por virgula (ex: 09:00, 13:00, 18:30)"
$ArrayDiffs = $NovosDiffs -split ","
$FullAtual = Obter-HorarioFull
if ($FullAtual -eq "Nao configurado") { $FullAtual = "00:30" }
Criar-Tarefas -HoraFull $FullAtual -HorariosDiff $ArrayDiffs
Write-Host "`nHorarios Diferenciais atualizados no Windows!" -ForegroundColor Green
Pause
}
"4" {
$Confirma = Read-Host "`nTem certeza que deseja apagar os agendamentos do Windows? (S/N)"
if ($Confirma -match "^[Ss]") {
Unregister-ScheduledTask -TaskName "Hemovida_Backup_FULL" -Confirm:$false -ErrorAction SilentlyContinue
Unregister-ScheduledTask -TaskName "Hemovida_Backup_DIFERENCIAL" -Confirm:$false -ErrorAction SilentlyContinue
Write-Host "`nTodas as tarefas de backup foram REMOVIDAS do Agendador!" -ForegroundColor Yellow
}
Pause
}
"5" {
# Executa a sua rotina de monitoramento intacta abrindo uma nova janela
$ComandoMonitor = "Get-ScheduledTask -TaskName 'Hemovida_Backup_*' | Select-Object TaskName, State; Write-Host '--- HORARIOS FULL ---' -ForegroundColor Cyan; (Get-ScheduledTask -TaskName 'Hemovida_Backup_FULL').Triggers | Select-Object StartBoundary, DaysInterval; Write-Host '--- HORARIOS DIFF ---' -ForegroundColor Cyan; (Get-ScheduledTask -TaskName 'Hemovida_Backup_DIFERENCIAL').Triggers | Select-Object StartBoundary; Write-Host '--- LENDO LOG ---' -ForegroundColor Green; `$Log = 'C:\Backup_Hemovida\Logs\Log_Backups_' + (Get-Date -Format 'yyyy-MM') + '.txt'; if (Test-Path `$Log) { Get-Content `$Log -Wait -Tail 20 } else { Write-Host '[AVISO] O log ainda nao existe na unidade C:. Ele aparecera aqui assim que o primeiro backup rodar!' -ForegroundColor Yellow }"
Start-Process powershell.exe -ArgumentList "-NoExit -NoProfile -ExecutionPolicy Bypass -WindowStyle Maximized -Command `"$ComandoMonitor`""
Write-Host "`nNova janela de monitoramento aberta com sucesso!" -ForegroundColor Green
Start-Sleep -Seconds 2
}
"0" {
Exit
}
default {
Write-Host "`nOpcao invalida. Tente novamente." -ForegroundColor Red
Start-Sleep -Seconds 2
}
}
}
(1-1/2)

Download file as

bat