Ajuda para criar um arquivo bat para agendar um backup

1

Eu tenho um arquivo mdb em C: \ Arquivos de Programas \ ApplcationName \ filename.mdb. Por favor, deixe-me saber o comando COPY para fazer um backup usando o arquivo .bat para uma pasta C: \ Backup. Em suma, estou tendo probles por causa do espaço entre "Program" e "Files".

Obrigado jaz

    
por Dave Cheney 14.06.2009 / 12:59

5 respostas

4

A parte do nome do arquivo do backup é a pior parte para criar. Você precisa ser capaz de criar um novo arquivo todos os dias sem muito trabalho. Então, aqui está o que eu uso:

Se você combinar duas dessas respostas (a minha e a anterior), você receberá esta joia:

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

Ao fazer isso, você terá um arquivo para a sua execução, nomeado com a data.

Um script de backup completo ficaria assim

@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

Esta é uma solução interativa completa. Mas o poder real está na linha set mydate . Ser capaz de cortar uma string é uma arte esquecida no DOS;

set mydate=%date:~10,4%_%date:~4,2%_%date:~7,2%

Eu pego o comando output of date, depois o corto e cito algo que pode ser usado como um nome de arquivo. Dessa forma, um novo arquivo é criado todos os dias e você pode ter um sistema de backup "real".

Basta editar os nomes do servidor, DC1, FS1, EXCH e colocar seus próprios, ou apenas usar caminhos de unidade.

    
por 14.06.2009 / 13:56
3

Eu não trabalho com o Windows há muito tempo, mas:

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

Você pode procurar a ajuda on-line sobre os switches que deseja usar para copiar.

    
por 14.06.2009 / 13:05
3

Você provavelmente deseja usar robocopy ou xcopy em vez de copiar. Ambos são muito mais robustos.

O problema com espaços pode ser resolvido colocando o caminho entre aspas. Por exemplo, "% ProgramFiles% \ ApplicationName \ filename.mdb" funcionará. O comando que eu usaria é:

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

    
por 14.06.2009 / 13:19
1

quando você chegar a um diretório com espaços, basta usar aspas.

copie c: \ "duas palavras" \ "outra" \ FileIcareabout.bla c: \ backup \ FileIcareabout.bla

ou coloque cada caminho entre aspas ...

copie "c: \ duas palavras \ outra \ FileIcareabout.bla" c: \ backup \ FileIcareabout.bla

TESTE de uma linha de comando com arquivos de teste antes de configurar o trabalho!

    
por 14.06.2009 / 15:16
1

O motivo pelo qual você está tendo problemas é porque você precisa colocar aspas em torno de qualquer nome de arquivo ou caminho com espaços. Use o comando at para obter o backup do arquivo em uma base programada. Consulte Referência da linha de comando

Nesse caso, se você quiser que o backup ocorra às 23h todos os dias, a linha seria:

at 11:00PM /every: M,T,W,Th,F,S,Su cmd/c copy "C:\Program Files\ApplcationName\filename.mdb" d:\backups
    
por 15.06.2009 / 05:13