Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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

dos befehl - aktuellste Datei

Frage Microsoft Windows Tools

Mitglied: admin-lif

admin-lif (Level 1) - Jetzt verbinden

05.10.2005, aktualisiert 17.10.2012, 12043 Aufrufe, 18 Kommentare

Hallo,

ich möchte mittels eines Dos-Befehls, immer die akutellste Log-Datei (Datensicherung) per e-mail übermitteln.
Das script schaut wie folgt aus:


"\\...\...\mailsend.exe" "mailserver" "Administrator@....de" "user@....de" "Datensicherung server" "Datensicherung server ist abgeschlossen. Details siehe Log-Datei. Gruss " "\\...\...\...\backup04.log"


in dem Ordner wird jetzt täglich eine log-Datei angelegt (backup05.log, backup06.log usw.)

anstatt "backup04.log" muss ich jetzt natürlich eine variable eingeben, sodass immer die neueste log-datei geschickt wird, wie geht das???

Danke im voraus
Mitglied: Biber
05.10.2005 um 19:34 Uhr
Moin admin-lif,
Einen Dos-Befehl zur Ermittlung der aktuellsten Datei kenn ich nicht.

Umgehungsstrategie:
Im Batch:
...
for /f %%i in ('dir /oD /b \\...\...\...\backup*.log') do @set newestlog=%%i

Dann steht in der Variablen %newestlog% der Name der neuesten Backup??.log.

Und wenn Du Deine letzte Mail-Zeile schreibst, musst Du dann diese Variable einsetzen.

also statt bisher "\\...\...\...\backup04.log"
jetzt schreiben "\\...\...\...\%newestlog%"

HTH
Frank / der Biber aus Bremen
Bitte warten ..
Mitglied: admin-lif
06.10.2005 um 08:11 Uhr
Moin Frank,

erstmal Danke funktioniert alles soweit ganz gut, die neueste Datei wird aufgerufen. Jetzt hab ich nur noch ein Problem:

Die aktuellste Datei (newestlog) wird geöffnet, anstatt wie ich es wollte per e-mail verschickt zu werden.
Bitte warten ..
Mitglied: Biber
06.10.2005 um 10:42 Uhr
Moin, admin-lif,

*axelzuck*
Was soll ich sagen? Ich hab nur an der Stelle in Deinem Script-Auszug, wo bisher fest verdrahtet "backup04.log" stand, eine Variable eingesetzt...
Wenn er diese backup.log bisher angefügt hat und nicht angezeigt, dann sollte er das auch mit der backup05.log, backup17.log oder welcher auch immer machen.

Sonst poste noch mal bitte Dein Scriptchen hier unten. Oben ist es etwas schwer lesbar.

Biber
Bitte warten ..
Mitglied: admin-lif
06.10.2005 um 10:52 Uhr
for /f %%i in ('dir /oD /b \\...\...\...\...\backup*.log') do @set newestlog=%%i


"\\...\...\mailsend.exe" "mailserver" "Administrator@.....de" "user@.....de" "Datensicherung server" "Datensicherung server ist abgeschlossen. Details siehe Log-Datei. Gruss admin-lif"\\...\...\...\%newestlog%"
Bitte warten ..
Mitglied: Biber
06.10.2005 um 12:17 Uhr
....> ....Datei. Gruss admin-lif"\\...\...\...\%newestlog%"

IMHO scheint da ein Leerzeichen und vor allem ein Anfü-Zeichen zu fehlen, oder?
.....Datei. Gruss admin-lif" "\\...\...\...\%newestlog%"

Aber ist nur eine ganz vage Vermutung... bin ja kein Programmierer *lacht

Und nu is Mittach...

Gruß Biber
Bitte warten ..
Mitglied: admin-lif
06.10.2005 um 12:22 Uhr
Es funktioniert jetzt, DANKE
Bitte warten ..
Mitglied: Biber
06.10.2005 um 13:05 Uhr
Dafür nich'...

wie wir bei uns in Bremen sagen..
Bitte warten ..
Mitglied: admin-lif
11.10.2005 um 08:54 Uhr
Hi,

mir ist noch was eingefallen was ich ergänzen möchte, und zwar:

ich möchte nur, dass das neuste log-file gemailt wird, wenn darin der text "erfolgreich" enthalten ist...

weiß jemand ne lösung???
Bitte warten ..
Mitglied: Biber
11.10.2005 um 10:19 Uhr
Moin, admin-lif,

ich würde -nach der Zeile "Ermittlung von %newestlog%" diese Datei nach dem String absuchen mit find.

Also z.B.
Type "\\...\...\...\%newestlog%"|Find /i "erfolgreich" >nul
IF Errorlevel 1 goto :eof
::Errorlevel 1 = String nicht gefunden, also auch nicht mailen
:: ... und hier kommen Deine Mailzeugs-Zeilen rein unverändert wie oben.
...
~~~~~~~

Anmerkung: Du solltest aber darauf achten, dass der Suchstring auch nur in OK-Logs steht.
Nicht etwa, dass im Fehlerfall dort "Nicht erfolgreich!!" geschrieben wird.
Grüße
Biber
Bitte warten ..
Mitglied: admin-lif
12.10.2005 um 14:01 Uhr
Hallo Biber,

hat alles prima geklappt, DANKE
Bitte warten ..
Mitglied: Biber
12.10.2005 um 14:09 Uhr
Freut mich und have a nice day!
Bitte warten ..
Mitglied: admin-lif
12.10.2005 um 14:45 Uhr
muss noch mal nerven, folgendes:

mein skript schaut nun so aus:

for /f %%i in ('dir /oD /b \\...\...\...\...\....txt') do @set newestlog=%%i


Type "\\...\...\...\...\%newestlog%"|Find /i "Auftragsabschlußstatus: Erfolgreich" >nul
IF Errorlevel 1 goto :eof
::Errorlevel 1 = String nicht gefunden, also auch nicht mailen


"\\...\...\mailsend.exe" "mailserver" "Administrator@...de" "user@....de" "Datensicherung erfolgreich" "Datensicherung ist erfolgreich abgeschlossen. Details siehe Log-Datei. Gruss admin-lif" "\\...\...\...\%newestlog%"


diese Befehlsreihe, ist in meiner batch-Datei mehrmals vorhanden, da es ja um verschiedene Sicherungen geht. Wenn nun der erste server nicht erfolgreich gesichert hat, arbeitet das skript den befehl für die darauffolgenden server nicht mehr ab.
Bitte warten ..
Mitglied: Biber
12.10.2005 um 15:06 Uhr
Tscha, admin-lif,

dann nützt uns zur Beantwortung der Frage nur das ganze Skript.
Entweder posten oder, wenn es Dir dafür zu lang/zu geheim erscheint, per pn an irgendeinen, der Spaß an so was hat.
Wenn Du keinen findest, dann halt an mich.

Biber

[Edit]
Grundsätzlich wäre der plumpeste Ansatz, der sicherlich auch erst mal Dein Problem behebt, überall dort, wo jetzt "goto :eof" steht, ein "goto ServerSicherung2", "goto ServerSicherung3" usw. zu schreiben und an den Beginn jeder neuen Serversicherung eben eine Sprungmarke ":Serversicherung2", ":Serversicherung3" etc. zu setzen.

Aber -zig Mal die funktional gleichen Blöcke (die sich nur in Servernamen und Pfaden unterscheiden) per Copy & Paste untereinanderzustellen - so etwas tut man/frau einfach nicht! Auch nicht in Bätchen.

Ist viel zu fehlerträchtig und nicht wartbar. Also von daher off limits für Admins.
[/Edit]
Bitte warten ..
Mitglied: admin-lif
24.10.2005 um 07:50 Uhr
funktioniert der befehl

"for /f %%i in ('dir /oD /b \\...\...\...\...\....txt') do @set newestlog=%%i"

auch irgendwie ohne "for-schleife"?
Bitte warten ..
Mitglied: Biber
24.10.2005 um 13:09 Uhr
Moin, admin_lif,

natürlich gäbe es noch ein, zwei andere Strategien, die es dir ermöglichen würde, die aktuellste Datei zu finden, ohne eine Liste von Dateien zu durchlaufen.

Aber das wären eben ganz andere Strategien und die erfordern an anderer Stelle ein oder zwei Programmzeilen mehr.
Beispiel (die Strategie-Entwicklung in Zeitlupe): Im Moment ist eine FOR-Schleife ja nötig, weil vom DIR-Befehl mehrere Dateien gefunden werden. Eine Liste eben. Wenn nur EINE Datei gefunden werden würde, bräuchte ich keine For-Schleife. Wen ich nur eine einzige als Rückgabe des Dir-Befehls bekommen will, kann ich das natürlich erreichen auf mehrere Arten. Wenn ich für die neueste BackupXX.log-Datei ein Kriterium finde, dass sie einzigartig macht.
Was kommt in Frage/steht zur Wahl? Name, Größe, Attribute, Erstellungsdatum.
Name - einzig ja... aber nicht bekannt oder ermittelbar ohne zusätzliche Loggerei (s.u.)
Größe - wertlos für eine Prüfung.
Erstellungsdatum - das ginge. Wenn der Batch als Dienst täglich läuft und die Backup-Datei immer von heute ist (falls überhaupt vorhanden)...das kann ich prüfen.
01.
>echo %Date% 
02.
Mo 24.10.2005 
03.
>dir *.log |find "%date:~-10%" 
04.
24.10.2005  12:54                    1227 Backup07.log
Über "Attribut" könnte ich ebenso genau eine Log-Datei finden.
Es gibt bei DIR den Schalter /A:A (nur Dateien mit Attribut "zu archivieren")
Wenn Du also alle Log-Dateien, die Du bereits archivierst bzw. gemailt hast, als "erledigt" kennzeichnest mit
attrib %newestlog% -A
nach dem Mailen... dann ist die neu angelegte BackupYY.Log die einzige, die gefunden wird bei
Dir /A:A backup??.log

Weiterhin könntest Du
- alle gemailten *.log-Dateien in diesem Verzeichnis verschieben oder umbenennen. Bleibt dann auch nur eine Datei über.
- den Namen der letzten gemailten Datei in eine Mini-Mini-Logdatei schreiben. Wenn da dann Backup27.log drinsteht, ist dann als nächstes Backup28.log dran...

Viele Wege nach Rom.. poste doch, was Du hast, dann ist es mit Tipps einfacher.

Grüße
Frank / der Biber aus Bremen
Bitte warten ..
Mitglied: admin-lif
24.10.2005 um 14:17 Uhr
Hallo,

ich weiß jetzt wie ich das ganze angehe, jetzt müsste ich bloß noch wissen wie man alle dateien in einem ordner mit fortlaufender nummer umbenennt.

da muss ich doch irgendwie ne variable angeben und diese dann definieren

???
Bitte warten ..
Mitglied: Biber
24.10.2005, aktualisiert 17.10.2012
Moin admin-lif.

es gab hier im Forum schon mehrfache Ansätze zum "Batch-Umbenennen mit Zähler/laufender Nummer" oder ähnlich. Hab ich leider nicht in meiner Spielwiese "Batch & Shell" wiedergefunden. Sind wohl in einer anderen Rubrik oder bedeckt von den Bergen anderer Bätche.. Falls ich noch den passenden Link finde, poste ich den hier - falls Du ihn vor mir findest, poste Du ihn bitte.
Aber ich bin über einen anderen Beitrag von heute gestolpert (<a href=http://www.administrator.de/forum/mehrere-dateien-umbenennen-18314.html target="blank">Mehrere Dateien umbenennen</a>).
Da wiederum wird auf ein Freewareprogramm verwiesen zum Dateien-Umbenennen (*lacht* was-es-alles-gibt-und-kopfschüttelt).
Dieser Link http://it-falke.com/software/renamefiles/de_download.php ist schon allein wegen der kreativen Schreibweisen des Wortes "umbenennen" ("Umbenennenungsaktionen", "Umbennenungsschritt") lesenswert

Biber
Bitte warten ..
Mitglied: admin-lif
25.10.2005 um 15:21 Uhr
Mein Skript schaut folgendermaßen aus, und ich will das ganze ohne for-schleife machen, hab aber keine ahnung wie???




copy "\\srv001\Programme\Backup\log*.txt" "\\backupserver\log\srv001"

copy "\\srv002\Programme\Backup\log*.txt" "\\backupserver\log\srv002"


for /f %%i in ('dir /oD /b \\backupserver\log\srv001\log*.txt') do @set newestlog=%%i


Type "\\backupserver\log\srv001\%newestlog%"|Find /i "Auftragsabschlußstatus: Erfolgreich" >nul
IF Errorlevel 1 goto :marke 1
::Errorlevel 1 = String nicht gefunden, also auch nicht mailen


"\\server003\mailsend.exe" "mailserver" "Administrator@test.de" "user@test.de" "Datensicherung srv001 erfolgreich" "Datensicherung srv001 ist erfolgreich abgeschlossen. Details siehe Log-Datei. Gruss admin" "\\backupserver\log\srv001\%newestlog%"


:marke 1
for /f %%i in ('dir /oD /b \\backupserver\log\srv002\log*.txt') do @set newestlog=%%i


Type "\\backupserver\log\srv002\%newestlog%"|Find /i "Auftragsabschlußstatus: Erfolgreich" >nul
IF Errorlevel 1 goto :marke 1
::Errorlevel 1 = String nicht gefunden, also auch nicht mailen


"\\server003\mailsend.exe" "mailserver" "Administrator@test.de" "user@test.de" "Datensicherung srv002 erfolgreich" "Datensicherung srv002 ist erfolgreich abgeschlossen. Details siehe Log-Datei. Gruss admin" "\\backupserver\log\srv002\%newestlog%"
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Aktueller Besitzer der aktuellen Datei herausfinden und in Variable schreiben (11)

Frage von Peter32 zum Thema Batch & Shell ...

Informationsdienste
gelöst Aktuelle Firefox MSI Datei!? (8)

Frage von Hendrik2586 zum Thema Informationsdienste ...

Batch & Shell
Mit ISO Datei CMD Befehle ausführen (15)

Frage von Alexsus zum Thema Batch & Shell ...

Neue Wissensbeiträge
Mac OS X

Apple hat macOS High Sierra veröffentlicht

(3)

Information von Frank zum Thema Mac OS X ...

Viren und Trojaner

Ransomware or Wiper? RedBoot Encrypts Files but also Modifies Partition Table

(4)

Information von BassFishFox zum Thema Viren und Trojaner ...

Notebook & Zubehör

WOL bei HP Notebooks

(8)

Erfahrungsbericht von Henere zum Thema Notebook & Zubehör ...

Heiß diskutierte Inhalte
Windows 10
gelöst Netzwerkkarte schaltet sich erst nach dem Logon ein (24)

Frage von DerWoWusste zum Thema Windows 10 ...

Windows Server
Seit IP Umstellung DC DNS Fehler (23)

Frage von Yaimael zum Thema Windows Server ...

Grafik
gelöst CAD Arbeitsplätze (17)

Frage von Diddi93 zum Thema Grafik ...

Weiterbildung
gelöst Fest angestellter Admin oder Systemhaus Admin mit Kundenbetreuung? (16)

Frage von Voiper zum Thema Weiterbildung ...