Помощь в создании файла bat для планирования резервного копирования
У меня есть файл MDB в C:\Program Files\ApplcationName\filename.mdb. Пожалуйста, дайте мне знать команду COPY для создания резервной копии с использованием файла.bat в папку C:\Backup. Короче говоря, у меня возникли проблемы из-за пробела между "Программа" и "Файлы".
Спасибо джаз
5 ответов
Часть имени файла резервной копии - худшая часть для создания. Вы должны иметь возможность создавать новый файл каждый день без особых хлопот. Итак, вот что я использую:
Если вы объедините два из этих ответов (мой и предыдущий), вы получите этот драгоценный камень:
set mydate=%date:~10,4%_%date:~4,2%_%date:~7,2%
xcopy "%ProgramFiles%\ApplicationName\filename.mdb" C:\Backup\%mydate%_filename.mdb /H /K /O /Y
Делая это таким образом, вы получите файл на каждый день своего запуска, названный с датой.
Полный скрипт резервного копирования будет выглядеть так
@echo off
:: Yes this looks bad, but it works, it sets the file veriable mydate to YYYY_MM_DAY
set mydate=%date:~10,4%_%date:~4,2%_%date:~7,2%
echo Backing up DC1:
:: start a new backup session, the /M switch is for the type of bakcup being performed, type ntbackup /? for more info
start /wait ntbackup backup \\DC1\c$ /j "DC1 Backup" /f "C:\BAK\DC1\DC1_%mydate%.bkf" /M incremental
echo DC1 is Done
echo Backing up EXCH:
start /wait ntbackup backup \\EXCH\c$ /j "EXCH Backup" /f "C:\BAK\EXCH\EXCH_%mydate%.bkf" /M incremental
echo EXCH is Done
echo Backing up FS1:
start /wait ntbackup backup \\FS1\c$ /j "FS1 Backup" /f "C:\BAK\FS1\FS1_%mydate%.bkf" /M incremental
echo FS1 is Done
echo Backup was completed %date% %time%
pause
Это полное интерактивное решение. Но настоящая сила в set mydate
линия. Возможность нарезать строку - заброшенное искусство в DOS;
set mydate=%date:~10,4%_%date:~4,2%_%date:~7,2%
Я беру вывод команды date, затем сокращаю его и выплевываю что-то, что можно использовать в качестве имени файла. Таким образом, каждый день создается новый файл, и вы можете иметь "настоящую" систему резервного копирования.
Просто отредактируйте имена серверов, DC1, FS1, EXCH и вставьте свои собственные, или просто используйте пути дисков.
Вы, вероятно, хотите использовать robocopy или xcopy вместо копирования. Они оба гораздо крепче.
Проблема с пробелами может быть решена путем заключения пути в кавычки. Например, "%ProgramFiles%\ApplicationName\filename.mdb" будет работать. Команда, которую я бы использовал:
xcopy "%ProgramFiles%\ApplicationName\filename.mdb" C: \ Резервное копирование /H /K /O /Y
Я давно не работал с окнами, но:
copy "source dir\foo.mdb" "target dir"
Возможно, вы захотите посмотреть онлайн-справку о переключателях, которые вы хотите использовать для копирования.
Когда вы попадаете в каталог с пробелами, просто используйте кавычки.
скопировать c: \ "два слова" \ "еще одно"\FileIcareabout.bla c:\backup\FileIcareabout.bla
или поставить каждый путь в кавычках...
скопируйте "c:\two words\another one\FileIcareabout.bla" c:\backup\FileIcareabout.bla
ТЕСТ из командной строки с тестовыми файлами перед настройкой задания!
Причина, по которой у вас возникают проблемы, заключается в том, что вам нужно заключать в кавычки любое имя файла или путь с пробелами. Используйте команду at, чтобы получить файл для резервного копирования по расписанию. См. Ссылку на командную строку
в этом случае, если вы хотите, чтобы резервное копирование происходило каждый день в 23:00, строка будет выглядеть так:
at 11:00PM /every: M,T,W,Th,F,S,Su cmd/c copy "C:\Program Files\ApplcationName\filename.mdb" d:\backups