[DOS 5.1] Backup batch <-> Vraag en tips

Pagina: 1
Acties:
  • 156 views sinds 30-01-2008
  • Reageer

  • StalieN
  • Registratie: Februari 2002
  • Laatst online: 03-09-2024
Hoi all

Ok ik heb een batch gemaakt dat ik in mijn Startup doe zodat elke keer als ik opstart mijn documenten, adressbook en emails (outlook express) worden gebackupped naar een server (mits de bestanden veranderd zijn sinds de vorige backup)

nu heb ik de volgende code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
@ECHO OFF

cls
color 2

ECHO Backup
ECHO ======
ECHO.
ECHO This program will backup your important files
ECHO Connecting Server
ECHO Please wait...

net use z: \\server\d\backups

ECHO Connected!
ECHO Transferring and backing up files
ECHO.
ECHO Copying all Documents
ECHO Please wait...

xcopy "D:\Mijn Documenten" "Z:\stalien\Mijn Documenten" /e /d /c /q /g /h /r /k /o /y /i

ECHO.
ECHO Done!
ECHO.
ECHO Copying E-mail Messages and Adress Book
ECHO Please wait...

xcopy "C:\Documents and Settings\stalien\Local Settings\Application Data\Identities\{4120C0ED-46DB-4620-AF29-15659D8F5F25}\Microsoft\Outlook Express" "Z:\Steve\Outlook Express" /e /d /c /q /g /h /r /k /o /y /i
xcopy "C:\Documents and Settings\Steve Lock\Application Data\Microsoft\Address Book" "Z:\stalien\Adress Book" /e /d /c /q /g /h /r /k /o /y /i

ECHO.
ECHO Done!

ECHO.
EchO Disconnecting...

net use z: /delete

ECHO Done!
ECHO.
ECHO All tasks Completed

Color 7

@ECHO ON
nu wil ik graag dat er ook nog in een logbestand (backup.log) iedere keer de datum en tijd van laatste backup wordt geplaatst... dus iets simpels dat je in het bestandje gewoon onder mekaar alle data + tijd krijgt...
nu weet ik niet of je vanuit een batch naar een bestand kan schrijven... dus de echte dos freak die mij kan helpen?

dan wilde ik ook nog weten hoe dat zit als er een error voorkomt: bijvoorbeeld: er kan niet geconnect worden met de server of de server kan niet gedisconnect worden (om wat voor reden dan ook) is er dan de mogelijkheid dat die errors doorgegeven worden aan het batchbestand zodat deze kan beslissen of het hele proces afgekapt moet worden of dat er opnieuw geprobeerd moet worden?
dit is overigens niet perse nodig... tzou wel grappig zijn als het kan...

tips/kritiek = ook welkom :7

www.stevelock.nl


  • Compubiter
  • Registratie: Oktober 2001
  • Laatst online: 21-08-2023

Compubiter

Think again

code:
1
echo %date% %time% >> backup.txt

Op deze manier worden de datum en tijd toegevoegd aan een tekstbestandje (kun je natuurlijk ook .log noemen) :)

Tweede vraag moet ik je helaas schuldig blijven :P.

  • Palomar
  • Registratie: Februari 2000
  • Niet online
code:
1
2
3
4
if not exist "Z:\stalien\Mijn Documenten" goto end

:end
@echo Backup mislukt

zoiets?

  • StalieN
  • Registratie: Februari 2002
  • Laatst online: 03-09-2024
Op Wednesday 30 October 2002 23:17 schreef Computiber het volgende:
code:
1
echo %date% %time% >> backup.txt
Op deze manier worden de datum en tijd toegevoegd aan een tekstbestandje (kun je natuurlijk ook .log noemen) :)

Tweede vraag moet ik je helaas schuldig blijven :P
thx! weer wat geleerd van een klassieke (programmeer)taal :D

Op Thursday 31 October 2002 00:01 schreef Palomar het volgende:
code:
1
2
3
4
if not exist "Z:\stalien\Mijn Documenten" goto end

:end
@echo Backup mislukt
zoiets?
hmm... ja zoiets
maar waar moet ik die code stopppen?
hiero?
code:
1
2
3
4
5
6
[...]
xcopy "D:\Mijn Documenten" "Z:\stalien\Mijn Documenten" /e /d /c /q /g /h /r /k /o /y /i
if not exist "Z:\stalien\Mijn Documenten" goto end
[...]
:end
@echo Backup mislukt


en als bijv niet geconnect kan worden met de server omdattie uitstaat ofzo.. hoe moet dat?

www.stevelock.nl


  • Palomar
  • Registratie: Februari 2000
  • Niet online
ik zou het net anders om doen... dan checkt ie eerst of de directory bestaat (zoniet goto end) en daarna doet ie pas een poging om te xcopy'en.

Maar ik zei ook niet voor niets ' zoiets' ;) ik heb het niet precies getest.. misschien dat je op inet wel wat batch tutorials kunt vinden. :)

  • Ralluph
  • Registratie: Maart 2001
  • Laatst online: 07-09 11:39

Ralluph

Aus der Reihe...

StalieN schreef op 31 oktober 2002 @ 08:43:
thx! weer wat geleerd van een klassieke (programmeer)taal :D
Voor het educatieve element: Using command redirection operators.
hmm... ja zoiets
maar waar moet ik die code stopppen?
hiero?
code:
1
2
3
4
5
6
[...]
xcopy "D:\Mijn Documenten" "Z:\stalien\Mijn Documenten" /e /d /c /q /g /h /r /k /o /y /i
if not exist "Z:\stalien\Mijn Documenten" goto end
[...]
:end
@echo Backup mislukt


en als bijv niet geconnect kan worden met de server omdattie uitstaat ofzo.. hoe moet dat?
Volgens mij komt er wel een errorlevel uit net use, en dan kun je met een geschikte if errorlevel wel weer checken of het mappen van je share gelukt is.

  • Maferick
  • Registratie: April 2002
  • Laatst online: 07-04-2021

Maferick

EVE-Online : Lellebel

hier een voorbeeldje van hoe ik het heb gedaan

@echo off
c:
cd \
cd folder
xcopy *.* z:\folder\*.* /e/c/r/y/z

if errorlevel 4 goto lowmemory
if errorlevel 2 goto abort
if errorlevel 0 goto ok

:lowmemory
net send gebruiker "Error trying to copy"
goto exit

:abort
net send gebruiker "You pressed CTRL+C to end the copy operation."
goto exit

:ok
net send gebruiker "Backup Done"
goto exit

:exit

# If you perceive that there are four possible ways in which something can go wrong, and circumvent these, then a fifth way, unprepared for, will promptly develop


  • StalieN
  • Registratie: Februari 2002
  • Laatst online: 03-09-2024
Op Thursday 31 October 2002 12:41 schreef Maferick01 het volgende:
hier een voorbeeldje van hoe ik het heb gedaan

@echo off
c:
cd \
cd folder
xcopy *.* z:\folder\*.* /e/c/r/y/z

if errorlevel 4 goto lowmemory
if errorlevel 2 goto abort
if errorlevel 0 goto ok

:lowmemory
net send gebruiker "Error trying to copy"
goto exit

:abort
net send gebruiker "You pressed CTRL+C to end the copy operation."
goto exit

:ok
net send gebruiker "Backup Done"
goto exit

:exit
hmmz ja...
maar hoe weet je welk errorlevel bij welke error hoort?
is daar een lijstje van ofzo?

www.stevelock.nl


  • Maferick
  • Registratie: April 2002
  • Laatst online: 07-04-2021

Maferick

EVE-Online : Lellebel

ik heb ze in een voorbeeld gevonden , maar ook nog even gezocht en iets gevonden op deze pagina

http://www.karkza.org/ftp...t%20computer/ERRLEVEL.TXT

# If you perceive that there are four possible ways in which something can go wrong, and circumvent these, then a fifth way, unprepared for, will promptly develop


  • Vae Victis
  • Registratie: April 2001
  • Laatst online: 08:21

Vae Victis

Dark Lord of the Sith

StalieN schreef op 31 oktober 2002 @ 15:36:
[...]

hmmz ja...
maar hoe weet je welk errorlevel bij welke error hoort?
is daar een lijstje van ofzo?
dat zul je vaak zelf uit moeten zoeken, elk programma heeft vaak eigen errorlevels output.

maar door een test batch file kun je dat wel achterhalen.
bv
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if errorlevel 4 goto err4
if errorlevel 3 goto err3
if errorlevel 2 goto err2
if errorlevel 1 goto err1
:err4
echo errorlevel 4
goto end
:err3
echo errorlevel 4
goto end
:err2
echo errorlevel 2
goto end
:err1
echo errorlevel 1
goto end

  • Ralluph
  • Registratie: Maart 2001
  • Laatst online: 07-09 11:39

Ralluph

Aus der Reihe...

Vae Victis schreef op 01 november 2002 @ 09:02:
[...]

dat zul je vaak zelf uit moeten zoeken, elk programma heeft vaak eigen errorlevels output.

maar door een test batch file kun je dat wel achterhalen.
Het mooie van het if errorlevel statement, is dat hij altijd het statement uitvoert als %ERRORLEVEL% groter of gelijk is dan de opgegeven refentiewaarde. Je programma kan er dus alsvolgt uitzien:

code:
1
2
3
4
5
6
7
8
9
10
11
12
voer_iets_uit
if errorlevel 1 goto fout

:goed
echo errorlevel zou 0 moeten zijn
echo errorlevel: %errorlevel%
exit /b 0

:fout
echo errorlevel >= 1
echo errorlevel: %errorlevel%
exit /b %errorlevel%

  • StalieN
  • Registratie: Februari 2002
  • Laatst online: 03-09-2024
Op Friday 01 November 2002 08:54 schreef Maferick01 het volgende:
ik heb ze in een voorbeeld gevonden , maar ook nog even gezocht en iets gevonden op deze pagina

http://www.karkza.org/ftp...t%20computer/ERRLEVEL.TXT
thx!
mooi die bewaar ik. das altijd handig :)

Op Friday 01 November 2002 09:02 schreef Vae Victis het volgende:
[...]
dat zul je vaak zelf uit moeten zoeken, elk programma heeft vaak eigen errorlevels output.

maar door een test batch file kun je dat wel achterhalen.
bv
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if errorlevel 4 goto err4
if errorlevel 3 goto err3
if errorlevel 2 goto err2
if errorlevel 1 goto err1
:err4
echo errorlevel 4
goto end
:err3
echo errorlevel 4
goto end
:err2
echo errorlevel 2
goto end
:err1
echo errorlevel 1
goto end
hmmzja.. maar dan vindt ik de manier van Maferick01 toch makkelijker :7

www.stevelock.nl


  • StalieN
  • Registratie: Februari 2002
  • Laatst online: 03-09-2024
Ralluph schreef op Friday 01 November 2002 09:27 het volgende:
Het mooie van het if errorlevel statement, is dat hij altijd het statement uitvoert als %ERRORLEVEL% groter of gelijk is dan de opgegeven refentiewaarde. Je programma kan er dus alsvolgt uitzien:

code:

voer_iets_uit
if errorlevel 1 goto fout

:goed
echo errorlevel zou 0 moeten zijn
echo errorlevel: %errorlevel%
exit /b 0

:fout
echo errorlevel >= 1
echo errorlevel: %errorlevel%
exit /b %errorlevel%
hmm... dat gaat met toch boven de pet; zo'n programmering.. zou je vetgedrukte code uit kunnen leggen?

www.stevelock.nl


  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

Die errorlevels geven aan of een programma goed aflluit. Als je programma dus goed verlopen is sluit je de batch met een errorlevel 0, als er ergens iets fout ging sluit je het met het errorlevel dat werd aangegeven op de plek waar het fout ging :)

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • Ralluph
  • Registratie: Maart 2001
  • Laatst online: 07-09 11:39

Ralluph

Aus der Reihe...

StalieN schreef op 01 november 2002 @ 10:04:
hmm... dat gaat met toch boven de pet; zo'n programmering.. zou je vetgedrukte code uit kunnen leggen?
jahoor, D:\>help exit:
Quits the CMD.EXE program (command interpreter) or the current batch
script.

EXIT [/B] [exitCode]

/B specifies to exit the current batch script instead of
CMD.EXE. If executed from outside a batch script, it
will quit CMD.EXE

exitCode specifies a numeric number. if /B is specified, sets
ERRORLEVEL that number. If quitting CMD.EXE, sets the process
exit code with that number.
met andere woorden, exit /b is de manier om de juiste manier uit een batchfile te exitten. Let op: die /b paramater werkt trouwens alleen in windows 2000 en xp. Als je een oudere versie van command/cmd (in je topictitle zie ik DOS 5.1) gebruikt, dan kun je alleen maar exit gebruiken.
Verder wordt bij de executie van je batch-script op alle plekken waar %errorlevel% staat, de actuele waarde van de omgevingsvariabele errorlevel ingevuld. exit /b %errorlevel% geeft dus precies de code terug die je in het script (na uitvoering van het niet-gespecificeerde commando) al bent tegengekomen.

  • Ralluph
  • Registratie: Maart 2001
  • Laatst online: 07-09 11:39

Ralluph

Aus der Reihe...

het is trouwens handig om in je foutafhandeling die exitcodes != 0 mee te geven, bijvoorbeeld als je je batchfile als scheduled task draait. Dan kun je direct in de Task Scheduler zien of je script de laatste keer goed heeft gelopen, of dat er toch iets mis is gegaan.

  • StalieN
  • Registratie: Februari 2002
  • Laatst online: 03-09-2024
ok thx voor de tips
heb nu proefwerkweek maar ga van het weekend eens verder klooien...
als de hele code klaar is gooi ikkem wel op deze topic...
hebben anderen in de search nog wat aan maybe...

www.stevelock.nl


  • StalieN
  • Registratie: Februari 2002
  • Laatst online: 03-09-2024
ok... ff nog een verandering...
zoals het script nu werkt controleerd de batch het bestand met datum op de server
dit betekent dat elk bestand gecontroleerd moet worden.. duurt erg lang met 10mbit.. (ook met 100mbit)
wat ik nu dus wil doen is dat er bij de backup de datum van de server uit de logfile wordt gehaald, die wordt vergeleken met de bestanden op de pc en de bestanden die nieuwer zijn worden geback-upped...
enige probleem: het kopieren gaat als volgt:
code:
1
xcopy [...] [...] /d:06-11-2002 [...]
en het opslaan naar logbestand met
code:
1
echo %date% > log.txt
geeft in log.txt:
code:
1
WO 06-11-2002
en die WO moet dus weg (drie tekens dus: twee tekens van de dag en een van de spatie).

Mijn vraag: hoe doe ik dat!?

www.stevelock.nl


  • StalieN
  • Registratie: Februari 2002
  • Laatst online: 03-09-2024
ff omhoog gooien...

kweet ook dat er nog een manier is van
code:
1
for /f tokens="1,2" [...]
ofzoiets... maar dat werkt niet lekker in batch

www.stevelock.nl


  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

FOR /F "tokens=1,2,3,4 delims=/- " %a in ('date/T') do set STALIENSDATE=%b-%c-%d

Dan is de variabele %STALIENSDATE% zoals je het hebben wilt :)
Natuurlijk %%a gebruiken ipv %a in een batch file.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • StalieN
  • Registratie: Februari 2002
  • Laatst online: 03-09-2024
ok...
thx nu werkt het :)

www.stevelock.nl

Pagina: 1