barkingdog
Goto Top

Sort Befehl führt zu einer Endlossschleife mit Fehlermeldung

Hallo,

ich hab hier eine bat mit deren Hilfe ich bestimmte Telefonnummern aus einer Log-Datei der Telefonanlage rausfiltere.
Die Nummern 100 und 111 sind die Nummern die rausgefiltertwerden. Diese Anrufe werden dann in eine Datei geschrieben, welche dann weiterverschickt wird.
Allerdings möchte ich diese Datei vorhin noch sortieren und zwar nach Datum und Uhrzeit. Bisher sind es zwei Blöcke nämlich einmal der mit der Nummer 100 und einmal mit der 111,da stimmt dann die Sortierung nicht.Ich habe es mit dem sort Befehl probiert allerdings, kommt es dabei zu einer Endlosschleife mit der Fehlermeldung: "Maximale Rekursionstiefe für Setlocal erreicht".


@echo off & setlocal 
set "Anrufe=D:\ANRUFE.TXT"   
set "AnrufeTemp=D:\ANRUFETEMP.TXT"  
set "CTILOG=D:\CTILOG.TXT"   
set "Antwort=D:\antwort.txt"  
set "Puffer=D:\bla.txt"  
set "variable=n"  

:Loop 
IF exist     %Anrufe% 	for /f "tokens=1-10 delims=," %%a  in ('findstr /c:", 111"  "%CTILOG%"^|findstr /c:",ein"')   do >>"%Anrufetemp%"  echo %%a,%%b,%%c,%%d,%%e,%%f  
IF exist     %Anrufe% 	for /f "tokens=1-10 delims=," %%a  in ('findstr /c:", 100"  "%CTILOG%"^|findstr /c:",ein"')   do >>"%Anrufetemp%"  echo %%a,%%b,%%c,%%d,%%e,%%f  
IF not exist %Anrufe% 	for /f "tokens=1-10 delims=," %%a  in ('findstr /c:", 111"  "%CTILOG%"^|findstr /c:",ein"')   do >>"%Anrufe%" 	   echo %%a,%%b,%%c,%%d,%%e,%%f  
IF not exist %Anrufe% 	for /f "tokens=1-10 delims=," %%a  in ('findstr /c:", 100"  "%CTILOG%"^|findstr /c:",ein"')   do >>"%Anrufe%" 	   echo %%a,%%b,%%c,%%d,%%e,%%f  
sort %Anrufe%  /o %Anrufe%
sort %Anrufetemp% /o %Anrufetemp%
goto :vergleich

:vergleich
echo %variable% >%antwort%
comp  %AnrufeTemp% %ANRUFE%<%antwort%
if  %ERRORLEVEL%==1 goto :Ungleich
if  %ERRORLEVEL%==0 del /q %AnrufeTemp% goto :Loop
del /q %Anrufetemp%
sleep 5
goto :Loop

:Ungleich
type nul > %Anrufe%
for /f "tokens=1-10 delims=," %%a  in ('findstr /c:", 111" "%CTILOG%"^|findstr /c:",ein"') do >>"%Anrufe%"  echo %%a,%%b,%%c,%%d,%%e,%%f  
for /f "tokens=1-10 delims=," %%a  in ('findstr /c:", 100" "%CTILOG%"^|findstr /c:",ein"') do >>"%Anrufe%"  echo %%a,%%b,%%c,%%d,%%e,%%f  
<b>sort %Anrufe% /m 1048576 /o %Anrufe%</b>
del /q %Anrufetemp%
goto :Loop

Beispiel aus der Logdatei der Telefonanlage:

01.12.2008,09:46:01, 100,       +49 (3333) 33333,  ja,ein,     9,                     100,                     100
01.12.2008,10:00:41, 100,       +49 (3333) 33333,  ja,aus,    14,                     100,                     100
01.12.2008,10:05:25, 111,       +49 (3333) 33333,nein,ein,     0,                     111,                     111
01.12.2008,10:20:50, 100,       +49 (3333) 33333,  ja,ein,    93,                     100,                     100

Mit freundlichen Grüßen

barkingdog

Content-Key: 106532

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

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

Member: barkingdog
barkingdog Jan 20, 2009 at 13:45:41 (UTC)
Goto Top
Hallo,

ich konnte es in der Zwischenzeit selber lösen.

@echo off & setlocal
set "Anrufe=D:\ANRUFE.TXT"  
set "AnrufeTemp=D:\ANRUFETEMP.TXT"  
set "CTILOG=D:\CTILOG.TXT"  
set "Antwort=D:\antwort.txt"  
set "variable=n"  

:Loop
IF exist     %Anrufe% 	for /f "tokens=1-10 delims=," %%a in ('findstr /c:", 111" "%CTILOG%"^|findstr /c:",ein"')do >>"%AnrufeTemp%"  echo %%a,%%b,%%c,%%d,%%e,%%f  
IF exist     %Anrufe% 	for /f "tokens=1-10 delims=," %%a in ('findstr /c:", 100" "%CTILOG%"^|findstr /c:",ein"')do >>"%AnrufeTemp%"  echo %%a,%%b,%%c,%%d,%%e,%%f  
IF not exist %Anrufe% 	for /f "tokens=1-10 delims=," %%a in ('findstr /c:", 111" "%CTILOG%"^|findstr /c:",ein"')do >>"%Anrufe%" 	  echo %%a,%%b,%%c,%%d,%%e,%%f  
IF not exist %Anrufe% 	for /f "tokens=1-10 delims=," %%a in ('findstr /c:", 100" "%CTILOG%"^|findstr /c:",ein"')do >>"%Anrufe%" 	  echo %%a,%%b,%%c,%%d,%%e,%%f  
goto :vergleich

:vergleich
echo %variable% >%antwort%
comp  %AnrufeTemp% %ANRUFE%<%antwort%
if  %ERRORLEVEL%==1 goto :Ungleich
if  %ERRORLEVEL%==0 del /q %AnrufeTemp% goto :Loop
sleep 5
goto :Loop

:Ungleich
type nul > %Anrufe%
for /f "tokens=1-10 delims=," %%a in ('findstr /c:", 111" "%CTILOG%"^|findstr /c:",ein"')do >>"%Anrufe%"  echo %%a,%%b,%%c,%%d,%%e,%%f  
for /f "tokens=1-10 delims=," %%a in ('findstr /c:", 100" "%CTILOG%"^|findstr /c:",ein"')do >>"%Anrufe%"  echo %%a,%%b,%%c,%%d,%%e,%%f  
del /q %AnrufeTemp%
goto :sort

:Sort
xcopy anrufe.txt /y d:\projekte
sort.exe d:\projekte\anrufe.txt /o d:\projekte\anrufe.txt
goto :Loop

Über ergänzende Kommentare zu der Lösung würde ich mich dennnoch freuen, da ich gerne verstehen würde wo das Problem lag.

Mit freundlichen Grüßen

barkingdog