Backup MSSQL to OneDrive

'dat.exe' is a utility that outputs the current date in a form of Year,Month,Day,Hour,Minute,Second,DayOfWeek - all with leading zeros. Contact me if you require it. Otherwise change the script to work with system date and time tools

@ECHO OFF
SETLOCAL
 
for /F "tokens=1-7 delims==," %%a in ('dat.exe') do (set DATE=%%a-%%b-%%c& set TIME=%%d:%%e:%%f)
echo %DATE%
echo %TIME%
 
SqlCmd -E -S 127.0.0.1 -h-1 -W -Q "SET NoCount ON; SELECT Name FROM master.dbo.sysDatabases WHERE [Name] NOT IN ('master','model','msdb','tempdb')" > databases.lst
FOR /F "tokens=*" %%I IN (databases.lst) DO (
	ECHO I1: %%I
	SqlCmd -E -S 127.0.0.1 -Q "BACKUP DATABASE [%%I] TO Disk='t:\BackupScript\Backup\I1\Backup_%DATE%_%%I.bak'"
	ECHO.
)
IF EXIST "databases.lst" DEL /F /Q "databases.lst"
 
attrib +U -P t:\BackupScript\Backup /s
 
ENDLOCAL

t:\BackupScript\Backup must be soft linked to your OneDrive folder, and OneDrive should be set to save up disk space.

Note - the OneDrive part works only if user is logged on.