Avatar billede korsg_ Nybegynder
17. januar 2005 - 14:53 Der er 21 kommentarer og
1 løsning

Xcopy logfile

Jeg skal have oprettet en logfil over mit backup script, så jeg kan tjecke hver morgen om den har fået alle filerne med..

Det eneste jeg ved at at man skal skrive ">navn.txt" i sit script og så bliver alt printet til den fil.. Men der står ikke tidspunkt osv. i filen, og den har egentlig ikke ret mange oplysninger, og hvis nu der sker en fejl kommer det så til at stå deri ?
Avatar billede Slettet bruger
17. januar 2005 - 14:58 #1
Post dit backup script herinde....

Hvis du bare laver ">navn.txt" bliver det som skulle stå på skærmen bare skrevet i filen.
Avatar billede Slettet bruger
17. januar 2005 - 15:02 #2
Og skriv hvilke OK du kører.....
Avatar billede korsg_ Nybegynder
17. januar 2005 - 15:05 #3
Okay her er scriptet, til oplysning står L for Lige uge og U for Ulige uge. Jeg vil bare gerne have at det kan være nemt lige at tjecke om morgenen om scriptet har lavet nogle fejl.

@echo off
set kilde=\\1.1.1.1\mappe\
set Destination=C:\Backup\mappe\
If not exist %Destination%kontrol.bat goto first
:videre
call %Destination%kontrol.bat
goto nydag
:videre2
echo set nr=%nrny% >%Destination%kontrol.bat
del %Destination%%nrny%\*.* /f /s /q
rmdir %Destination%%nrny% /s /q
xcopy %kilde%*.tps %Destination%%nrny%\*.tps /y /s /I >%Destination%Log.txt
goto end

:first
if not exist %destination% md %destination%
echo set nr=sun >%Destination%kontrol.bat
goto videre

:nydag
if %nr%==SøndagL goto SøndagL
if %nr%==MandagL goto MandagL
if %nr%==TirsdagL goto TirsdagL
if %nr%==OnsdagL goto OnsdagL
if %nr%==TorsdagL goto TorsdagL
if %nr%==FredagL goto FredagL
if %nr%==LørdagL goto LørdagL
if %nr%==SøndagU goto SøndagU
if %nr%==MandagU goto MandagU
if %nr%==TirsdagU goto TirsdagU
if %nr%==OnsdagU goto OnsdagU
if %nr%==TorsdagU goto TorsdagU
if %nr%==FredagU goto FredagU
if %nr%==LørdagU goto LørdagU

:SøndagL
set nrny=MandagL
goto videre2

:MandagL
set nrny=TirsdagL
goto videre2

:TirsdagL
set nrny=OnsdagL
goto videre2

:OnsdagL
set nrny=TorsdagL
goto videre2

:TorsdagL
set nrny=FredagL
goto videre2

:FredagL
set nrny=LørdagL
goto videre2

:LørdagL
set nrny=SøndagU
goto videre2

:SøndagU
set nrny=MandagU
goto videre2

:MandagU
set nrny=TirsdagU
goto videre2

:TirsdagU
set nrny=OnsdagU
goto videre2

:OnsdagU
set nrny=TorsdagU
goto videre2

:TorsdagU
set nrny=FredagU
goto videre2

:FredagU
set nrny=LørdagU
goto videre2

:LørdagU
set nrny=SøndagL
goto videre2


:end
Avatar billede ejvindh Ekspert
17. januar 2005 - 15:14 #4
Jeg synes jeg har set det script før ;-)
Du kan tilføje et /F til xcopy-linien.
Hvis du vil have tid og dato ind i log-filen, kan du tilføje følgende i starten af programmet:

Date
Time
Avatar billede ejvindh Ekspert
17. januar 2005 - 15:19 #5
Hvis du vil have rigtig mange detaljer i din log, kan du også fjerne første linie i dit oprindelige script.
Avatar billede korsg_ Nybegynder
18. januar 2005 - 12:47 #6
hehe ja den virker bekendt ikke :D

Hvad gør /F kommandoen ?

Og jo vil egentlig bare have Dato og tid på hver fil den kopiere, og jeg går ud fra at den skriver hvis den laver en fejl eller der er en fil som den ikke kan kopiere?

Det dato/Time, skal det bare skrives øverst i scriptet ??
Avatar billede korsg_ Nybegynder
18. januar 2005 - 12:59 #7
Hmm når jeg smider Date og Time ind promter den og vil have mig til at skrive datoen ind ?
Avatar billede ejvindh Ekspert
18. januar 2005 - 13:31 #8
Omkring /F og xcopy: Displays full source and destination file names while copying.
http://www.computerhope.com/xcopyhlp.htm

Du kunne også vælge /L istedet: Displays files that would be copied.

Angående date og time: Skriv dette istedet:
echo %date%
echo %time%

Med denne løsning får du angivet tid og dato for starten. Ved at sætte disse linier ind til sidst, får du også tid og dato for afslutningen. Jeg tror ikke du kan få en fortløbende tids-stempling. Men Xcopy skriver fortløbende hvis en kopiering mislykkes.
Avatar billede korsg_ Nybegynder
18. januar 2005 - 13:45 #9
Okay det med /F virker,

Men det med datoen og tiden virker ikke.. når jeg sætter dem ind som det første kan jeg se at den sætter datoen og tiden med det kommer ikke med i logfilen,.
Avatar billede ejvindh Ekspert
18. januar 2005 - 14:08 #10
Ja, du har ret -- igen. Jeg havde ikke fået læst dine ændringer i scriptet ordentligt. Sådan her så:

Den første pipe til logfilen skal være med 1 '>'. De efterfølgende skal være med 2 for at indikere at filen ikke skal overskrives, men blot tilføjes noget. Så i dit oprindelige script:

Tilføj mellem 3. og 4. linie:
echo %date% >%Destination%Log.txt
echo %time% >>%Destination%Log.txt

Erstat 12. linie (i det oprindelige) med:
xcopy %kilde%*.tps %Destination%%nrny%\*.tps /y /s /I /F >>%Destination%Log.txt

Så tror jeg det rykker :-)
Avatar billede korsg_ Nybegynder
18. januar 2005 - 14:41 #11
Okay tak endnu en gang, det rykker fint nu :D

Men fandt ud af at der skal være 2 ">" i første pipe også, ellers laver den en ny logfil pr. dag.. der skal helst være en logfil for 14 dage af gange.. så det er næste projekt.. altså at logfilen bare skal slettes hver fjortens dag :)

Så giv lige et svar så du kan få dine velfortjente point !
Avatar billede ejvindh Ekspert
18. januar 2005 - 14:49 #12
Du får den her gratis. Det var jo faktisk også en del af dit oprindelige spørgsmål som jeg bare havde overset. :-)

http://www.eksperten.dk/spm/581616
Avatar billede ejvindh Ekspert
18. januar 2005 - 15:04 #13
Et forslag til hvordan du løser problemet med sletning af log-fil: hvad nu hvis du faktisk lavede én logfil pr. backup og så gemte den inde i selve dags-mappen. Så bliver den jo automatisk slettet når du 14 dage senere sletter mappen med indhold.
Avatar billede ejvindh Ekspert
18. januar 2005 - 15:07 #14
Nej, prøv og vent. Læg denne linie ind lige under :LørdagU (mellem 4. og 3.-sidste linie):

del %Destination%Log.txt /f /s /q
Avatar billede korsg_ Nybegynder
18. januar 2005 - 15:09 #15
okay tak, men det kan være du kan tjene nogle point alligevel :D

Jeg skal nemlig tage backup af 52 computere, og det kommer der jo ret mange logfiler ud af.. og det koster ret langt tid at tjecke dem efter hver morgen.. men kan man ikke få et program til analysere en logfil og fortælle om der er sket fejl i den ?

Ellers var det slet ikke en dårlig ide du kom med der til sidst :P
Avatar billede ejvindh Ekspert
18. januar 2005 - 15:26 #16
Med min allersidste løsning: Så skal man dog nok flytte tids-stemplingen ned under :videre2 (da du ellers mister den, den dag loggen slettes).

Det kunne iøvrigt være en ide at supplere xcopy-linien med et /c (så kopieringen fortsætter selvom der opstår fejl)

Jeg har ikke et bud på, et program der kan analysere loggen. Men det kan da givetvis laves. Man skal bare vide hvad den skriver ved fejlene og så lave en søgning herpå. En primitiv metode kunne jo være simpelthen at læse dem ind i en teksteditor og så søge på fejlmeddelser.
Avatar billede ejvindh Ekspert
18. januar 2005 - 15:54 #17
Pokkers, jeg kommer lige til at se, at fejlmeddelserne fra xcopy ikke bliver redirected til filen, men kun til skærmen. I hvert fald hvis destinations-drevet ikke findes. Hvilke fejlmeldinger er det, du gerne vil kunne checke for?

Ved drevet fuld, kommer fejlen med i loggen, men xcopy stopper op og beder dig om at sætte en ny disk i.

Jeg undskylder at jeg kegler lidt rundt her, men det er lidt svært at teste tingene, når man ikke har et ordentligt miljø at teste i. Hvilke fejl er relevante for dig?
Avatar billede ejvindh Ekspert
18. januar 2005 - 16:40 #18
comp %kilde%*.tps %Destination%%nrny%\*.tps /l >>%Destination%Log.txt
lige efter xcopy-linien, løser noget af problemet. Den slutter bare af med at bede brugeren bekræfte at man ikke vil sammenligne flere filer. Og programmet lukker ikke ned før dette er bekræftet. Kan du leve med det?

Hvis ja, så løser det måske også dit problem med automatisk log-læsning. Idet comp melder "ikke" for hver fil, der er fejl i. Lav et script med:

findstr /s "ikke" Log.txt
pause >nul

Angiver de linier i Log.txt hvor teksten "ikke" findes. Hvis du vil checke flere log.txt filer på én gang kan man lave wildcards (/s parameteren angiver at checker også i undermapper).
Avatar billede korsg_ Nybegynder
21. januar 2005 - 13:39 #19
Jeg har ikke lige haft tid til at kigge herinde de sidste par dage, men det kører ellers kanon den comp kommando.

Men hvor for nogle ting siger den ellers end "ikke"..

Jeg havde tænkt mig at den skulle komme med fejlmelding hvis filen ikke kunne kopieres havde samme størrelse osv osv.. bare alle mulige fejl.. Men det kan være "ikke" er dækket ind over det hele ?

Det med at programmet ikke lukker ned kan man ikke bruge en kommando så den gør det .. /n måske ?...

Husk lige at lave et svar, du skal jo have dine points :D
Avatar billede ejvindh Ekspert
21. januar 2005 - 13:54 #20
/n bruges desværre til noget andet, og der er desværre så vidt jeg ved ikke en parameter der slår spørgsmålet fra.

Comp siger
-Filerne er ens. (når de er ens - når alt er i orden)
-Filen xxx kan ikke findes/åbnes (når der ikke er nogen fil på kilde/dest)
-Filerne har ikke samme størrelse (når dette er tilfældet)
-Sammenligningsfejl ved LINJE x
fil1 = xx
fil2 = yy
(når der er nogle tegn der adskiller sig fra hinanden)

Angående det sidste tilfælde, ser det ud til at findstr skal udvides lidt:
findstr /s "ikke" Log.txt
findstr /s "fejl" Log.txt
pause >nul

Jeg lægger svar nu, da vi vist efterhånden har bevæget os udover det tidligere spørgsmål. :-)
Avatar billede korsg_ Nybegynder
21. januar 2005 - 14:16 #21
Ja det har du ret i og jeg siger tak :P

Hvis du kommer i tanke om en parameter der kan slukke det fra er du velkommen til at skrive det

Det med at udvide findstr, kan man ikke koble det sammen til en linie ?
Noget i stil med findst /s "ikke" "fejl" Log.txt
Avatar billede ejvindh Ekspert
21. januar 2005 - 14:24 #22
Takker for point :-)

Du kan ikke samle findstr til én linie. Men i 99,99% af alle tilfældene vil den jo nok slet ikke finde noget (da de fleste kopieringer jo er vellykkede). Derfor tror jeg ikke at det tab af overskuelighed vil være stort. Og du kan jo bare samle de 3 linier i et nyt script, så har du stadig kun én kommando at skulle indtaste (nemlig navnet på det lille test-script).
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