@echo off setlocal enabledelayedexpansion :: --- CONFIGURATION --- set "DB_USER=backup_user" set "DB_PASS=your_secure_password" set "DB_NAME=your_laravel_db_name" <-- REPLACE THIS with your actual DB name set "BACKUP_ROOT=D:\Backups" set "MYSQL_BIN=D:\MariaDB\bin" :: --- DYNAMIC PATHS --- set "DATE_STAMP=%date:~10,4%-%date:~4,2%-%date:~7,2%" set "HOUR_STAMP=%time:~0,2%" if "%HOUR_STAMP:~0,1%"==" " set "HOUR_STAMP=0%HOUR_STAMP:~1,1%" set "DEST_FOLDER=%BACKUP_ROOT%\%DATE_STAMP%" set "FILE_NAME=db_%DB_NAME%_%HOUR_STAMP%00.sql" :: --- EXECUTION --- if not exist "%DEST_FOLDER%" mkdir "%DEST_FOLDER%" echo [%date% %time%] Starting backup for %DB_NAME%... :: Note: removed --all-databases and added %DB_NAME% "%MYSQL_BIN%\mysqldump.exe" -u %DB_USER% -p%DB_PASS% --single-transaction --quick %DB_NAME% > "%DEST_FOLDER%\%FILE_NAME%" if %ERRORLEVEL% equ 0 ( echo [%date% %time%] Backup successful: %FILE_NAME% ) else ( echo [%date% %time%] ERROR: Backup failed! ) :: --- CLEANUP REMOVED --- :: The line for deleting old files has been removed to keep backups forever. endlocal