Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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, 11981 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
PowerShell-Befehl zum mounten einer tib Datei gesucht (7)

Frage von Koopaaa zum Thema Batch & Shell ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...

Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...