kirus22
Goto Top

Probleme mit findstr

Hallo zusammen,

ich habe folgendes Problem mit meinem Skript. Ich bekomme immer die Fehlermeldung " Kein Fehler gefunden" obwohl er einen Fehler finden sollte... was mache ich da falsch?

Start Skript --------------------------------------------

@echo off
set Backuppatch=%userprofile%\Lokale Einstellungen\Anwendungsdaten\Microsoft\Windows NT\NTBackup\data

type "%Backuppatch%\backup01.log" >%tmp%\Log.txt

findstr /C:"Der Vorgang wurde nicht ordnungsgemäß ausgeführt." "%tmp%\log.txt"
if %errorlevel% == 0 Goto Fehler

echo Kein Fehler gefunden
pause

:Fehler
echo Fehler im Backup. Bitte überprüfen Sie die LogDatei
pause

End Skript -------------------------------------------

Inhalt der backup01.log

Start Backup01.log ----------------------------------------

Sicherungsstatus
Vorgang: Sicherung
Aktives Sicherungsziel: Datei
Mediumname: "Datensicherung.bkf wurde erstellt durch 09.09.2006 um 14:55"
Sicherung von "C: - System -"
Sicherungssatz #1 auf Medium #1
Sicherungsbeschreibung: "Erstellt am ..."
Mediumname: "Datensicherung.bkf wurde erstellt durch 09.09.2006 um 14:55"
Sicherungsart: Normal

Sicherung begonnen am 09.09.2006 um 14:55.
Der Vorgang wurde beendet.
Sicherung abgeschlossen am 09.09.2006 um 14:55.
Verzeichnisse: 2
Dateien: 18
Bytes: 1.508.746
Zeit: 2 Sekunden


Der Vorgang wurde nicht ordnungsgemäß ausgeführt.


End Backup01.log-------------------------------------

Gruß Henning

Content-ID: 39744

Url: https://administrator.de/contentid/39744

Ausgedruckt am: 26.11.2024 um 16:11 Uhr

Biber
Biber 09.09.2006 um 22:19:40 Uhr
Goto Top
Moin kirus22,

das eigentliche Problem ist banal - findstr.exe ist zu blöd inflexibel, um so exotische Zeichen wie Umlaute zu prüfen.
Wenn Du den zu prüfenden String verkürzt auf "Der Vorgang wurde nicht ordnungsgem", was auch ausreichend wäre, dann funktioniert es.

Dennoch als Anmerkung: den Batchschnipsel würde ich etwas kürzen..

@echo off & setlocal
set "Backuppatch=%userprofile%\Lokale Einstellungen\Anwendungsdaten\Microsoft\Windows NT\NTBackup\data"  
findstr /C:"Der Vorgang wurde nicht ordnungsgem" "%BackupPatch%\backup01.log" && Goto FehlerGefunden  

echo Kein Fehler gefunden.
goto ende

:FehlerGefunden
echo Fehler im Backup. Bitte überprüfen Sie die LogDatei.

:ende
pause

Der Umweg über "type...>tmpdatei" ist überflüssig.

Gruß Biber
[Edit] Korrektur/Ergänzung: findstr könnte auch die Umlaute in der NTBackup.log-Datei wiederfinden, wenn diese Datei den im DOS-Zeichensatz geschrieben worden wäre. Die wird aber als ANSI-*.txt-Datei geschrieben.
D.h. dort werden die Umlaute "richtig angezeigt", wenn Du die Datei mit Notepad öffnest.
Findstr geht aber vom DOS-Zeichensatz aus.
Und vergleicht "Der Vorgang wurde nicht ordnungsgemõ▀ ausgef³hrt." mit "Der Vorgang wurde nicht ordnungsgemäß ausgeführt."
[/Edit]
Kirus22
Kirus22 10.09.2006 um 10:42:06 Uhr
Goto Top
Hallo zusammen,
danke schon mal für den guten Tipp. Es funktioniert jetzt. Nur ich hab jetzt noch ein Problem, da ntbackup immer wieder neue Log Dateien anlegt von backup01-backup10.log...
wie kann ich denn da immer die aktuellste log Datei abfragen? Kann ich das mittels Batch (abfragen)?

Gruß Henning
Biber
Biber 10.09.2006 um 13:15:22 Uhr
Goto Top
Moin kirus22,

dann solltest Du die jüngste backupXX.log-Datei mit dem DIR-Befehl ermitteln und auch in eine Variable schreiben.
Ja, geht im Batch. Eine mögliche Variante wäre:
::------ snipp ShowLastBackup.bat 
@echo off & setlocal
set "BackupDir=%userprofile%\Lokale Einstellungen\Anwendungsdaten\Microsoft\Windows NT\NTBackup\data"  
for /f %%i in ('dir /b /o:d "%BackupDir%\backup??.log"') do Set "BackupFile=%%i"  
findstr /C:"Der Vorgang wurde nicht ordnungsgem" "%BackupDir%\%BackupFile%" && Goto FehlerGefunden  

echo Kein Fehler gefunden.
goto ende

:FehlerGefunden
echo Fehler im Backup. Bitte überprüfen Sie die LogDatei %backupFile%.
REM ..oder alternativ gleich: notepad "%BackupDir%\%BackupFile%"  

:ende
pause

Gruß
Biber
Kirus22
Kirus22 10.09.2006 um 16:11:56 Uhr
Goto Top
Hallo Biber,

leider funktioniert das Skript so nicht face-sad Das Skript findet mal wieder keine fehler... Hast du vielleicht noch ein Tipp?

Gruß Henning
Biber
Biber 10.09.2006 um 16:33:37 Uhr
Goto Top
Moin kirus22,

der Vorteil bei so ein paar Zeilen ist ja, dass die sich zur Not einzeln am CMD-Prompt eintippen lassen.
Was passiert denn wenn Du wahlweise im Batch das "echo off" in "echo on" änderst
oder alternativ am CMD-Prompt (Zeile für Zeile nacheinander) eingibst:
set "BackupDir=%userprofile%\Lokale Einstellungen\Anwendungsdaten\Microsoft\Windows NT\NTBackup\data"  
for /f %i in ('dir /b /o:d "%BackupDir%\backup??.log"') do Set "BackupFile=%i"  
set backup

findstr /C:"Der Vorgang wurde nicht ordnungsgem" "%BackupDir%\%BackupFile%"   
Welche Ausgabe brennt denn dann auf dem Monitor?

Gruß
Biber
Kirus22
Kirus22 10.09.2006 um 17:28:22 Uhr
Goto Top
mmm, dann geht es... wie kann das sein? Wenn ich es als cmd ausführe dann schließt sich das fenster sofort...
Biber
Biber 10.09.2006 um 20:00:11 Uhr
Goto Top
Also, kirus22,

wenn ich die obige Batchdatei ohne Änderungen bei mir am CMD-Prompt starte. dann:
Z:\>
$cmd$ShowLastBackup.bat
Der Vorgang wurde nicht ordnungsgemäß ausgeführt.
Fehler im Backup. Bitte überprüfen Sie die LogDatei backup09.log.
Drücken Sie eine beliebige Taste . . .

..works as designed, wie es bei uns heißt.
Bitte überprüfe noch mal auf Tippfehler in der Batch. Bzw. lass den Batch vom CMD-Prompt laufen und zwar mit "echo on" statt "echo off".

Gruß
Biber
Kirus22
Kirus22 10.09.2006 um 21:26:07 Uhr
Goto Top
Hi Biber,

danke noch mal für deine Hilfe. Problem war:

for /f %i in ('dir /b /o:d "%BackupDir%\backup??.log"') do Set "BackupFile=%i"

so gehts => for /f %%i in ('dir /b /o:d "%BackupDir%\backup??.log"') do Set "BackupFile=%%i"

Schönen Tag dann noch.

Gruß Henning
106543
106543 30.07.2012 aktualisiert um 16:13:38 Uhr
Goto Top
Hi Leute face-smile

um nochmal das Thema aufzureißen face-smile
wieso verwendet ihr alle Workarounds für das Problem mit den Umlauten?
Gibts da keine Möglichkeit zur Behebung ?
Ich hätte nämlich ein ähnliches Problem und würde gerne kein Workaround kriegen face-smile
Mein Problem ist, dass ich Usersitzungen auslese und diese mitunter einen Umlaut haben den ich weiter brauche um die Sitzung zu beenden.

Grüße
Dominik