Помощь в создании файла 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
Другие вопросы по тегам