У меня есть файл 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