@echo off setlocal enabledelayedexpansion :: Set database configuration set DB_NAME=soilgd set DB_USER=postgres set BACKUP_DIR=backups :: Generate timestamp (format: YYYYMMDD_HHMMSS) :: Use simple PowerShell command to get timestamp for /f %%i in ('powershell -command "Get-Date -Format 'yyyyMMdd_HHmmss'"') do set TIMESTAMP=%%i echo ===================================== echo PostgreSQL Database Backup Tool echo ===================================== echo. :: Create backup directory if not exists if not exist "%BACKUP_DIR%" ( echo Creating backup directory: %BACKUP_DIR% mkdir "%BACKUP_DIR%" ) :: Set backup filename set BACKUP_FILE=%BACKUP_DIR%\%DB_NAME%_backup_%TIMESTAMP%.dump echo Starting database backup: %DB_NAME% echo Backup file: %BACKUP_FILE% echo. :: Execute backup command echo Executing backup... pg_dump -U %DB_USER% -Fc %DB_NAME% > "%BACKUP_FILE%" :: Check if backup was successful if %ERRORLEVEL% EQU 0 ( echo. echo Backup completed successfully! echo Backup file saved to: %BACKUP_FILE% :: Display file size for %%A in ("%BACKUP_FILE%") do ( echo Backup file size: %%~zA bytes ) ) else ( echo. echo Backup failed! Please check: echo 1. Is PostgreSQL service running? echo 2. Does database %DB_NAME% exist? echo 3. Does user %DB_USER% have permissions? echo 4. Is pg_dump command in system PATH? ) echo. echo Backup operation completed. pause