Q1: When do you need to copy the backup file? Q2: How do you know that the backup has been completed at the time you want to perform the copy?
To avoid trying to copy a backup file that hasn't been completed yet, I would made the copy part of the process that creates the backup (with logic for "IF (backup succesful) THEN (copy file) ELSE (send panic email). You could set it on a different schedule(r), but then you've got possible timing synchronization issues -- ones that you have to resolve now that will apply for the next N weeks, months, or years, and things (such as database sizes) tend to change in unpredictable ways over the longer stretches of time.
If (for example) your database backup is being generated by a SQL Agent job, then what you'd do is add a step to the job after the backup is made to copy the file--in this case, to call your batch file. There are any number of ways to do this, and they're all a bit involved, so I'll just give some highlights:
- Add a second job step, with job step type of "Operating System (CmdExec)"; in here, call the batch file
- Add a second job step, job step type "Transact-SQL script (T-SQL)", and use xp_cmdshell to call your batch file
- Add a second T-SQL step, it calls a procedure, that procedure shells out via xp_cmdshell, and can do other stuff if or as necessary.
The big gotcha here will be security: does the account running SQL Agent have sufficient rights to access file files and folders, do you want xp_cmdexec enabled, what about the SQL Agent proxy account... it can get complex fast, depending on how your environment is configured and how tight you want security to be. Be wary as you go forward with this!