Avatar billede krohn Praktikant
18. december 2003 - 14:53 Der er 4 kommentarer og
1 løsning

Bat fil til backup

Jeg har en lille bat fil:
mkdir c:\test\%date%
copy C:\dell\drivers\R58201\setup*.* c:\test\%date%
Som opretter en mappe med dags dato+ indhold, når den køres.
Kan man ikke skrive sig til at når man har haft f.eks to dages backup, og laver nr tre, så sletter den den første, det må gerne være to bat filer

Det bat fil jeg har sat ind er en test..
Avatar billede bertelbrander Novice
18. december 2003 - 20:29 #1
En løsning:
http://www.eksperten.dk/spm/436829

Hvis du kun vil have to mapper kan jeg godt lave et lille script. Hvilket OS?
Avatar billede krohn Praktikant
18. december 2003 - 20:34 #2
Som du rigtigt har gættet er det til en lille simpel backup af to. Hvis man kan lave det så den kun laver to mapper og så starter forfra ville det være kanon,
Os er win 2003 server
Avatar billede bertelbrander Novice
19. december 2003 - 00:07 #3
Du skal rette linien med "set BackupPath=..." så den passer til dit formål.

Scriptet vil lave en fil kaldet olddate.txt hvori det gemmer dato for tidligere backup, så det er vigtigt at scriptet kører fra samme mappe hver gang.

Scriptet tæller ikke dage, men backups.

Scriptet vil ikke slette backups lavet af andre (medmindre at de er kørt samme dag).

Der er ikke taget højde for at scriptet kan køre flere gange på samme dag.

Du kan ændre det der står efter :DoBackup, blot du beholder "echo %date% >>olddate.txt"

Linierne der starter med del og rd er ansvarlige for sletning af tidligere backups.

Jeg har testet scriptet på Win2000, jeg forventer at det vil virke på andre NT OS'er, herunder Win2003 server, men der vil ikke køre på 9x eller ME.

@echo off
setlocal

set BackupPath=c:\temp

if exist tempoldate.txt del tempoldate.txt
if not exist olddate.txt goto :DoBackup

set Num=0
set Count=0

for /F "delims=;" %%I in (olddate.txt) do call :CountLines
if %Num% GEQ 2 (
  for /F "delims=;" %%I in (olddate.txt) do call :CheckDel "%%I"
  del olddate.txt
  ren tempoldate.txt olddate.txt
)

goto :DoBackup

:CountLines
set /A Num+=1
goto :eof

:CheckDel
set /A Count += 1
if %Count% GTR 1 (
  echo %~1 >> tempoldate.txt
  goto :eof
)
set xxx=%~1
if "%xxx:~-1%"==" " set xxx=%xxx:~0,-1%
if "%xxx:~-1%"==" " set xxx=%xxx:~0,-1%
echo deleting: %BackupPath%\%xxx%
del /S /Q "%BackupPath%\%xxx%"
rd /S /Q "%BackupPath%\%xxx%"
goto :eof

:DoBackup
echo %date% >>olddate.txt

md "%BackupPath%\%date%"
copy *.* "%BackupPath%\%date%"
Avatar billede krohn Praktikant
24. januar 2004 - 09:24 #4
Vil du have point må du lige lægge et svar
Avatar billede bertelbrander Novice
24. januar 2004 - 14:00 #5
Jeg forsøger at undgå point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester