Назад | Перейти на главную страницу

Помощь по созданию файла bat для планирования резервного копирования

У меня есть файл MDB в C: \ Program Files \ ApplcationName \ filename.mdb. Пожалуйста, дайте мне знать команду COPY, чтобы сделать резервную копию с помощью файла .bat в папку C: \ Backup. Короче говоря, у меня проблемы из-за пробела между «программой» и «файлами».

Спасибо джаз

Часть имени файла резервной копии - это худшая часть для создания. У вас должна быть возможность каждый день создавать новый файл без особых хлопот. Итак, вот что я использую:

Если вы объедините два из этих ответов (мой и предыдущий), вы получите жемчужину:

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 вместо copy. Они оба намного надежнее.

Проблема с пробелами может быть решена заключением пути в кавычки. Например, "% ProgramFiles% \ ApplicationName \ filename.mdb" будет работать. Я бы использовал следующую команду:

xcopy "% ProgramFiles% \ ApplicationName \ filename.mdb" C: \ Backup / H / K / O / Y

Я давно не работал с окнами, но:

copy "source dir\foo.mdb" "target dir"

Вы можете просмотреть интерактивную справку о переключателях, которые вы хотите использовать для копирования.

когда вы попадаете в каталог с пробелами, просто используйте кавычки.

скопируйте c: \ "два слова" \ "еще одно" \ FileIcareabout.bla c: \ backup \ FileIcareabout.bla

или заключите каждый путь в кавычки ...

скопируйте "c: \ два слова \ еще одно \ 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