schulle2
Goto Top

Batch more.com hängt

Hallo liebe Community,

hier ist ein Teil eines Such - Scriptes, welches mir gerade Kopfschmerzen bereitet:
Wenn die If Abfrage erfolgreich ist, wird es normal beendet.
Wenn jedoch der else fall eintritt, führt es zwar alles aus, beendet den prozess more.com nicht und macht erst nach einem space tastendruck weiter. (tempfile wird aber erstellt!)
entweder habe ich gerade tomaten auf den augen oder blicke es nicht.
Wäre dankbar für jeglich hilfe face-smile=

FOR /F "delims=" %%i in ('find /n /i %suchstring% %infile%') do set zeile=%%i
if "%zeile:~0,5%" == "-----" (
echo *
echo %suchstring% nicht in "%infile%" vorhanden
echo
*

) else (
set /a zeile=%zeile%-1
more +%zeile% %infile%>tempfile.txt
del %infile%
ren tempfile.txt %infile%
echo *
echo "Durchlauf erfolgreich! Alle Logeintraege aelter 2 Monate wurden geloescht."
echo
*

)


gruß

schulle2

Content-Key: 64181

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

Printed on: April 23, 2024 at 09:04 o'clock

Member: bastla
bastla Jul 19, 2007 at 08:35:43 (UTC)
Goto Top
Hallo schulle2!

Wie sieht's denn mit
type %infile%|more +%zeile%>tempfile.txt
aus?

Grüße
bastla
Member: schulle2
schulle2 Jul 19, 2007 at 08:40:00 (UTC)
Goto Top
Hi bastla,

leider genau das gleiche...
hat sich nichts verändert.
Wird erst fortgesetzt nach dem space tastendruck...
Member: bastla
bastla Jul 19, 2007 at 09:24:35 (UTC)
Goto Top
Hallo schulle2!

Wenn ich %suchstring% unter Anführungszeichen setze (sind bei Dir vielleicht schon in der Variable enthalten) funktioniert das "more" unter XP Prof ohne Probleme.

Allerdings wird auch die Zeile mit der Nummer %zeile% noch mit abgeschnitten, da innerhalb der Klammer die Berechnung %zeile%-1 nicht mehr ausgewertet wird - dazu bräuchtest Du ein "setlocal enabledelayedexpansion" vorneweg oder eine Auflösung des "if"-Konstruktes.

Außerdem darf %infile% keinen Pfad enthalten (wird bei Dir ja ohnehin nicht der Fall sein), da sonst das "rename" scheitert.

Unter Berücksichtigung dieser Kleinigkeiten läuft bei mir die folgende Version:
FOR /F "delims=" %%i in ('find /n /i "%suchstring%" %infile%') do set zeile=%%i  
if "%zeile:~0,5%" == "-----" goto :NichtDa  

set /a zeile-=1
more +%zeile% %infile%>tempfile.txt
move /y tempfile.txt %infile%
echo *
echo "Durchlauf erfolgreich! Alle Logeintraege aelter 2 Monate wurden geloescht."  
echo *
goto :Weiter

:NichtDa
echo *
echo %suchstring% nicht in "%infile%" vorhanden  
echo *
goto :Weiter

:Weiter
echo Was sonst noch anliegt ...

Grüße
bastla
Member: schulle2
schulle2 Jul 19, 2007 at 10:29:56 (UTC)
Goto Top
Hallo bastla,

Vielen Dank, aber leider nutze ich W2K + W2K3. Leider wieder ergebnislos face-sad
Die Anführungszeichen müssen raus, denn sonst findet er den Suchstring nicht.

Der Suchstring hat folgendes Format:

19-JAN-2007

Aber das klappt ja alles.
Er erkennt auch die richtige Zeile und kopiert auch alles richtig in das tmp file.
Das einzige was nicht klappt, ist dass der more.com Prozess nicht beendet wird....

Hast du sonst noch eine Idee?


Gruß Schulle2
Member: schulle2
schulle2 Jul 19, 2007 at 11:40:47 (UTC)
Goto Top
Ich nochmal:

scheinbar kann man wohl das more auch mit der eingabe "q" beenden.
jedoch soll dies ja automatisiert passieren.
Hat jmd eine Idee wie?


Gruß Schulle02
Member: schulle2
schulle2 Jul 30, 2007 at 11:28:19 (UTC)
Goto Top
fällt niemandem etwas dazu ein?
gibt es irgend einen umweg/alternative für more?

für jegliche hilfe im voraus!