Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Datenbank Backup Script

Mitglied: lexadron

lexadron (Level 1) - Jetzt verbinden

04.11.2008, aktualisiert 10.11.2008, 3937 Aufrufe, 3 Kommentare

Hallo Leute,
ich bin momentan im Praktikum im EDV-Bereich einer Zahnklinik und habe als Aufgabe bekommen ein batch-script zu schreiben
das ein backup des hier benutzten datenbank systems in dem format name_wochentag abzuspeichern.
Das Problem dabei ist das ich genau 0 Kentnisse von der Programmierung von batch-Scripten habe. Lediglich ein paar Java und C Kentnisse im Rahmen der
Ausbildung, die mich hier ja Syntax technisch nicht wirklich weiter bringen.
Mit Hilfe von dem Forum hier und ner Wikibook Seite hab ich zumindest schon einen Ansatz hinbekommen, wo es aber noch an so einigen Feinheiten fehlt.
Bevor ich den Part des Scriptes poste den ich schon habe, sei gesagt das ich das Script an einem simplen Ipconfig Befehl der in einer .txt abgespeichert werden soll teste mit einer .log die das
Datum enthält wann diese Datei erstellt wurde.
Also bisher sieht das Script folgendermaßen aus:
::---------snipp minidate.bat
@Echo on & setlocal
Echo Wscript.Echo DatePart(wscript.Arguments(0),Date) >%temp%\miniDateInfo.vbs
for /f %%i in ('cscript //nologo %temp%\miniDateInfo.vbs "w"') do Set "DoW=%%i"
Del %temp%\miniDateInfo.vbs

IF %DoW%==1 Set "cDow=Sonntag"
IF %DoW%==2 Set "cDow=Montag"
IF %DoW%==3 Set "cDow=Dienstag"
IF %DoW%==4 Set "cDow=Mittwoch"
IF %DoW%==5 Set "cDow=Donnerstag"
IF %DoW%==6 Set "cDow=Freitag"
IF %DoW%==7 Set "cDow=Samstag"

echo Demo1: DoW: %DoW% -^> cDoW: %cDoW%

:erster Teil
if exist test_%cDoW%.txt ipconfig > C:\Profiles\zmkpraktikant\Desktop\test_%cDoW%_1.txt
if exist test_%cDoW%.log date/t > C:\Profiles\zmkpraktikant\Desktop\test_%cDoW%_1.log
time/t >> C:\Profiles\zmkpraktikant\Desktop\test_%cDoW%_1.log
pause
del C:\Profiles\zmkpraktikant\Desktop\test_%cDoW%.txt
del C:\Profiles\zmkpraktikant\Desktop\test_%cDoW%.log
pause
ren C:\Profiles\zmkpraktikant\Desktop\test_%cDoW%_1.txt test_%cDoW%.txt
ren C:\Profiles\zmkpraktikant\Desktop\test_%cDoW%_1.log test_%cDoW%.log
pause
:zweiter Teil
ipconfig > C:\Profiles\zmkpraktikant\Desktop\test_%cDoW%.txt
date/t > C:\Profiles\zmkpraktikant\Desktop\test_%cDoW%.log
time/t >> C:\Profiles\zmkpraktikant\Desktop\test_%cDoW%.log
pause
Die pause Befehle stehen da bisher nur drin um nachzuvollziehen können wie das Script bisher arbeitet.
Das Script gibt bei nicht-vorhandensein von irgendwelchen Daten für die ersten Abschnitte ja immer ein "nicht vorhanden" aus und erstellt mit dem letzten Teil dann ja
die benötigte .txt und .log. Wenn diese Dateien jetzt aber schon bestehen (quasi in der 2. 3. 4. ... Woche) soll ein file mit name_wochentag_1 angelegt werden, die Datei
von der vorigen Woche soll gelöscht werden und dann die _1 Datei umbenannt werden in das übliche Format. Das Problem ist jetzt das der letzte Teil vom Script ja trotzdem
nochmal aufgerufen wird und die ganze Geschichte dann nochmal überschrieben wird.
In meinem Testbeispiel mit der ipconfig sache ja kein Problem, aber wenn das im Endeffekt mit dem Datenbank backup passiert das ja weitaus größer ist als sone ipconfig.txt
gestaltet sich das schon etwas problematisch.
Ich habe auch schon versucht da irgendwie ne if else Schleife einzubauen, aber da ich von der Syntax wie gesagt quasi null Plan habe is das nit so einfach.
Ich habe mir inzwischen noch überlegt das ich für die prüfung ob die datei bereits vorhanden ist im falle der folgewochen einfach folgendes versuche:

if exist test_%cDoW%.txt set "%%k"=="8"
if not exist test_%cDoW%.txt set "%%k"=="9"

und dann im folgenden:

if "%%k"=="8"(
:erster Teil)
if "%%k"=="9"(
:zweiter Teil)

Hier ist das Problem das ich halt auch nicht weiß wie ich die Variablen deklariere, da in dem geposteten Fall die Variable %k ist und nicht 8 oder 9 :/

Ich hoffe ich hab mich nicht allzu Wirr ausgedrückt und ihr könnt mir irgendwie helfen.
Ich danke schonmal vorab für die Unterstützung.

Mit freundlichen Grüßen
Axel aka lexadron
Mitglied: lexadron
05.11.2008 um 19:07 Uhr
*push*

Hat sich noch niemand gefunden die/der mir helfen kann? :|
Bitte warten ..
Mitglied: Biber
07.11.2008 um 18:46 Uhr
Moin lexadron,

willkommen im Forum.
if exist test_%cDoW%.txt set "%%k"=="8"
if not exist test_%cDoW%.txt set "%%k"=="9"

und dann im folgenden:

if "%%k"=="8"(
:erster Teil)
if "%%k"=="9"(
:zweiter Teil)

Die CMD.exe, also der Interpreter, der Batch-Dateien ausführt kennt mehrere Arten von Variablen, die sicht unter anderem nach Sichtbarkeit, Lebensdauer und Dauerhaftigkeit unterscheiden.
Die für Dich wichtigste Unterscheidung wäre nach dem Merkmal "statisch"/"dynamisch"

a) Dynamische Variablen haben eigentlich die allerallerkürzesteste Lebensdauer. Diese existieren nur während eines einzigen Schleifendurchlaufs einer FOR-Anweisung.
Beispiel am CMD-Prompt:
01.
>FOR /L %i in (1,3,13) do @echo %i 
02.
03.
04.
05.
10 
06.
13
[eine "Zählschleife", bei 1 anfangen, Inkrement 3, bis maximal zum Wert 13]
Die dynamische Variable %i nimmt nacheinander den Wert 1,4,7, 10 13 an
Dynamische Variablen haben als Namenskonvention immer ein %-Zeichen am CMD-Prompt (bzw "%%" im Batch) plus ein Zeichen [dokumentiert: a-z; A-Z -->%a,,,,,%Z].
Aber: ein Wert für %i existiert nur, solange die FOR-Anweisung läuft - in der Zeile davor oder danach ist %i unbekannt (oder richtiger ausgedrückt) undefiniert.
Diesen dynamischen Variablen kannst Du auch keinen Wert zuweisen oder die auf ihren Inhalt z.B mit Substringfunktionen zugreifen.

b) die "statischen" Variablen ("statisch" ist in Anführungszeichen, weil ich die zur Unterscheidung von den "dynamischen" Laufvariablen so nennen würde. keine Ahnung, wie die bei M$ selbst heißen.

= alle Variablen, die Du selbst mit
SET variable=wert
am CMD-Prompt oder in einem Batch definierst.
Plus ein paar mehr, die eben schon vorher definiert waren (%username%, %path%,....), die Du zwar ändern dürtest, aber nicht ändern solltest.

Wo Du jetzt oben nicht weiterkamst war ja der Versuch
if exist test_%cDoW%.txt set "%%k"=="8"
if not exist test_%cDoW%.txt set "%%k"=="9"
... einer "dynamischen Laufvariablen", erkennbar daran, dass sie der Namenskonvention (s.o.) %a...%Z entspricht, einen Wert zuzuweisen.
Außerdem ist bei einer zuweisung EIN "=" zwingend, bei einem Ist-gleich-Vergeleich zwei (==).
Geht als schlicht von der Syntax her nicht.

So etwas ginge schon.
if exist test_%cDoW%.txt SET meinevar=8
if not exist test_%cDoW%.txt SET "k=9"

und dann kannst Du auch den Inhalt von %meinevar% oder von %k% prüfen.
IF "%meinevar%"=="8" echo Variable meinevar hat den Wert 8
IF [%k%]==[9] echo variable k hat den Wert 9

Grüße
Biber
Bitte warten ..
Mitglied: lexadron
10.11.2008 um 10:45 Uhr
Hallo,

vielen vielen Dank für die Hilfe, sehr verständlich geschrieben, auch für einen blutigen Anfänger :D
Das mit den Variablen hatte ich verstanden und geändert und stand dann vor dem nächsten Problem, das Script brach an der Stelle wo die for-Anweisung mit Bedingung startete dann immer ab....
Wie ich dann feststellen musste konnte ein simples Leerzeichen abhilfe schaffen... -.-
Jetzt funktioniert das Script erstmal soweit, mal gucken ob mein Chef dann auch damit zufrieden ist ;D
So sieht das fertige Script dann jetzt aus:
01.
::---------snipp minidate.bat 
02.
@Echo on & setlocal 
03.
Echo Wscript.Echo DatePart(wscript.Arguments(0),Date) >%temp%\miniDateInfo.vbs 
04.
for /f %%i in ('cscript //nologo %temp%\miniDateInfo.vbs "w"') do Set "DoW=%%i" 
05.
Del %temp%\miniDateInfo.vbs 
06.
IF %DoW%==1 Set "cDow=Sonntag" 
07.
IF %DoW%==2 Set "cDow=Montag" 
08.
IF %DoW%==3 Set "cDow=Dienstag" 
09.
IF %DoW%==4 Set "cDow=Mittwoch" 
10.
IF %DoW%==5 Set "cDow=Donnerstag" 
11.
IF %DoW%==6 Set "cDow=Freitag" 
12.
IF %DoW%==7 Set "cDow=Samstag" 
13.
echo Demo1: DoW: %DoW% -^> cDoW: %cDoW% 
14.
if exist test_%cDoW%.txt set k=8 
15.
if not exist test_%cDoW%.txt set k=9 
16.
if "%k%"=="8" (  
17.
ipconfig >  C:\Profiles\zmkpraktikant\Desktop\test_%cDoW%_1.txt 
18.
date/t   >  C:\Profiles\zmkpraktikant\Desktop\test_%cDoW%_1.log 
19.
time/t   >> C:\Profiles\zmkpraktikant\Desktop\test_%cDoW%_1.log 
20.
del C:\Profiles\zmkpraktikant\Desktop\test_%cDoW%.txt 
21.
del C:\Profiles\zmkpraktikant\Desktop\test_%cDoW%.log 
22.
ren C:\Profiles\zmkpraktikant\Desktop\test_%cDoW%_1.txt test_%cDoW%.txt 
23.
ren C:\Profiles\zmkpraktikant\Desktop\test_%cDoW%_1.log test_%cDoW%.log 
24.
25.
if "%k%"=="9" (  
26.
ipconfig >  C:\Profiles\zmkpraktikant\Desktop\test_%cDoW%.txt 
27.
date/t   >  C:\Profiles\zmkpraktikant\Desktop\test_%cDoW%.log 
28.
time/t   >> C:\Profiles\zmkpraktikant\Desktop\test_%cDoW%.log 
29.
)
Dann muss ich jetzt nur nochmal schaun wie sich das auf unsere Datenbank anwenden lässt, aber ich denke das bekomm ich hin, sonst meld ich mich nochmal ;)
Nochmal vielen Dank für die Hilfe Biber.

Liebe Grüße
Axel
Bitte warten ..
Ähnliche Inhalte
Windows Server

Backup von SQL-Datenbanken auf einem Netzwerkshare!

gelöst Frage von gmeurbWindows Server10 Kommentare

Hallo, ich nutze hier einen SQL Server 2008 R2 und möchte Backups auf einen Netzwerkshare durchführen. Die Backups laufen ...

Batch & Shell

Backup-Script hängt an OpenVPN

gelöst Frage von trallerBatch & Shell12 Kommentare

Hallo, ich möchte unter Ubuntu ein Script zum Backup einrichten. Das Script sieht momentan so aus: momentan "hängt" es ...

Batch & Shell

Robocopy Backup Script

Tipp von kunert0345Batch & Shell9 Kommentare

Backupscript zum Erstellen monatlicher Backups und zur täglichen Aktualisierung der monatlichen Backups:

Batch & Shell

Backup Script Optimierung und MSSQL

Frage von TommyB83Batch & Shell4 Kommentare

Hiho :) Ich hätt da mal 'ne Frage. Scenario ist wie folgt: Windows Server 2012 R2 mit IIS und ...

Neue Wissensbeiträge
Vmware
VMware Update für den ESXi 5.5 verfügbar
Information von sabines vor 8 StundenVmware

Nach dem ganzen Hickhack um Update mit Microcode Anpassungen und Rückzug, gibt es nun für den ESXi 5.5 ein ...

CPU, RAM, Mainboards

Meltdown und Spectre: Intel zieht Microcode-Updates für Prozessoren zurück

Information von keine-ahnung vor 12 StundenCPU, RAM, Mainboards5 Kommentare

Moin, extrem lutztig. Nur gut, dass ich noch nicht beim Probanden-Bingo mitgemacht habe :-) LG, Thomas

Router & Routing
PfSense als Addon auf QNAP
Information von magicteddy vor 1 TagRouter & Routing7 Kommentare

Moin, für Spielereien eine ganz nette Idee aber ich fürchte das soetwas auch als echte Firewall genutzt wird: In ...

Datenschutz

Teamviewer kommt für IoT-Geräte wie den Raspberry Pi

Information von magicteddy vor 1 TagDatenschutz1 Kommentar

Moin, jetzt werden IoT Geräte endgültig zur Wanze? Anscheinend kann man auf einem Dashboard seine Geräte visualisieren Ich stelle ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Preis für Wartungsvertrag ok?
gelöst Frage von a-za-zNetzwerkmanagement26 Kommentare

Hallo! Mal ne Frage, weil ich mich mit dem akzeptablen Preis für einen Reaktionszeitvertrag nicht auskenne. Meine Firma hat ...

Windows Server
TEMP-Profile
gelöst Frage von Forseti2003Windows Server21 Kommentare

Guten Morgen, wer kennt sie nicht, die lieben Temporären Benutzerprofile, vorallem immer dann, wenn man sie am wenigsten braucht. ...

Multimedia & Zubehör
Welches Tablet für die Verkäufer?
Frage von Hendrik2586Multimedia & Zubehör15 Kommentare

Guten Morgen meine Lieben, vielleicht könnt ihr mir ja helfen. Es geht um unsere Außendienstmitarbeiter /Verkäufer. Sie sollen demnächst ...

Windows Netzwerk
Ist ein Portforwarding auf einen PC ohne lauschendes Programm ein (großes) Sicherheitsproblem?
Frage von PluwimWindows Netzwerk13 Kommentare

Hallo zusammen, zur Fernwartung eines Rechners an einem anderen Ort nutze ich VNC. Da dieser Rechner einfach nur eine ...