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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 39744
Url: https://administrator.de/contentid/39744
Ausgedruckt am: 26.11.2024 um 16:11 Uhr
9 Kommentare
Neuester Kommentar
Moin kirus22,
das eigentliche Problem ist banal - findstr.exe ist zublö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..
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]
das eigentliche Problem ist banal - findstr.exe ist zu
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]
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:
Gruß
Biber
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
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:
Welche Ausgabe brennt denn dann auf dem Monitor?
Gruß
Biber
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%"
Gruß
Biber
Also, kirus22,
wenn ich die obige Batchdatei ohne Änderungen bei mir am CMD-Prompt starte. dann:
..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
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
Hi Leute
um nochmal das Thema aufzureißen
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
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
um nochmal das Thema aufzureißen
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
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