Comp Befehl - Ist das möglich ?
Hallo zusammen,
ich frage mich ob dass was ich vor habe so möglich ist bzw. was an meinem Code falsch ist.
So vorne Weg schon einmal der Code, damit jeder weiss was gemeint ist.
Es geht hier um eine Telefonliste(CTILOG.txt) , welche auf eine bestimmte Nummer ("111" )untersucht wird und ob es ein eingehender Anruf ( "ein" )war. Diese Einträge sollen
dann in die Anrufe.txt gespeichert werden. Allerdings möchte ich nur neu eingehende Anrufe in Anrufe.txt aufnhemen. Deswegen erstelle ich einmal am Anfang die Anrufe.txt,
wenn diese existiert werden die Einträge nur noch in die Anrufetemp.txt aufgenommen.
Und hier liegt jetzt auch das eigentliche Problem, ich will jetzt die Anrufetemp.txt mit der Anrufe.txt vergleichen, sind sie gleich soll die Anrufetemp.txt gelöscht werden, sind
sie unterschiedlich, soll die Annrufe.txt überschrieben werden.
Klappt beim ersten Mal, beim zweiten Durchlauf wird der Inhalt der Anrufe.txt gelöscht. Ich weiss nicht woran das liegt.
Ist mein Vorhaben so umsetzbar, oder macht es keinen Sinn. Gibt es eine möglichkeit die Abfrage die beim comp Befehl kommt "Weitere Dateien vergleichen (J/N) ?" zu deaktivieren?
Beispiel für CTILOG.txt
ich frage mich ob dass was ich vor habe so möglich ist bzw. was an meinem Code falsch ist.
So vorne Weg schon einmal der Code, damit jeder weiss was gemeint ist.
@echo off & setlocal
set "Anrufe=D:\ANRUFE.TXT"
set "AnrufeTemp=D:\ANRUFETEMP.TXT"
set "CTILOG=D:\CTILOG.TXT"
:Loop
IF exist D:\ANRUFE.TXT 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 not exist D:\ANRUFE.TXT for /f "tokens=1-10 delims=," %%a in ('findstr /c:", 111" "%CTILOG%"^|findstr /c:",ein"')do >>"%Anrufe%" echo %%a,%%b,%%c,%%d,%%e,%%f
comp %ANRUFETEMP% %ANRUFE%
if %ERRORLEVEL% EQU 0 del %ANRUFETEMP% else %ERRORLEVEL% EQU 5 %ANRUFETEMP% > %ANRUFE%
sleep 40
goto :Loop
Es geht hier um eine Telefonliste(CTILOG.txt) , welche auf eine bestimmte Nummer ("111" )untersucht wird und ob es ein eingehender Anruf ( "ein" )war. Diese Einträge sollen
dann in die Anrufe.txt gespeichert werden. Allerdings möchte ich nur neu eingehende Anrufe in Anrufe.txt aufnhemen. Deswegen erstelle ich einmal am Anfang die Anrufe.txt,
wenn diese existiert werden die Einträge nur noch in die Anrufetemp.txt aufgenommen.
Und hier liegt jetzt auch das eigentliche Problem, ich will jetzt die Anrufetemp.txt mit der Anrufe.txt vergleichen, sind sie gleich soll die Anrufetemp.txt gelöscht werden, sind
sie unterschiedlich, soll die Annrufe.txt überschrieben werden.
Klappt beim ersten Mal, beim zweiten Durchlauf wird der Inhalt der Anrufe.txt gelöscht. Ich weiss nicht woran das liegt.
Ist mein Vorhaben so umsetzbar, oder macht es keinen Sinn. Gibt es eine möglichkeit die Abfrage die beim comp Befehl kommt "Weitere Dateien vergleichen (J/N) ?" zu deaktivieren?
Beispiel für CTILOG.txt
01.12.2008,09:46:01, 100, +49 (555) 66666, ja,ein, 9, 100, 100
01.12.2008,10:00:41, 100, +49 (777) 88888, ja,aus, 14, 100, 100
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 105770
Url: https://administrator.de/contentid/105770
Ausgedruckt am: 12.11.2024 um 22:11 Uhr
7 Kommentare
Neuester Kommentar
Servus,
grob drüber gesehen:
nimm anstatt
Nimm anstatt
Macht mehr Sinn eine Variable nicht nur zu deklarieren sondern auch zu benutzen.
Gruß
grob drüber gesehen:
nimm anstatt
comp
FC
FC
Nimm anstatt
IF exist D:\ANRUFE.TXT
IF exist %ANRUFE%
IF exist %ANRUFE%
Macht mehr Sinn eine Variable nicht nur zu deklarieren sondern auch zu benutzen.
Gruß
Zitat von @barkingdog:
Hallo,
ich habe jetzt den "comp"-Befehl mit dem
"fc"-Befehl ersetzt. Allerdings ohne Erfolg.
Wenn ich die bat ausführe und zu der Abfrage komme ob ich
weitere Dateien vergleichen möchte und dann auf
"N" drücke bricht die .bat ab.
Hallo,
ich habe jetzt den "comp"-Befehl mit dem
"fc"-Befehl ersetzt. Allerdings ohne Erfolg.
Wenn ich die bat ausführe und zu der Abfrage komme ob ich
weitere Dateien vergleichen möchte und dann auf
"N" drücke bricht die .bat ab.
Servus,
FC fragt im Unterschied zu Comp nicht ob du weitere Dateien überprüfen willst.
Beende mal alle deine Scripte - überprüfe deine Batch und starte Sie neu
Gruß
Servus,
ich versteh das zwar nicht, muß es aber dann wohl akzeptieren ...
Aber kannst du mich mal aufklären, welche Funktion in Zeile 10 bzw. 2 (in zweiten Schnippsel) abläuft, wenn der Errorlevel equ 1 ist?
fehlt da nicht ein copy oder echo
Gruß
ich versteh das zwar nicht, muß es aber dann wohl akzeptieren ...
Aber kannst du mich mal aufklären, welche Funktion in Zeile 10 bzw. 2 (in zweiten Schnippsel) abläuft, wenn der Errorlevel equ 1 ist?
fehlt da nicht ein copy oder echo
if %ERRORLEVEL% EQU 0 del %ANRUFETEMP% else %ERRORLEVEL% EQU 1 %ANRUFETEMP% > %ANRUFE%
Gruß
Servus,
Lass dich nicht von jedem, der eine Webseite mit Zeichensalat füllen kann verpochern
Und meine Frage zielte genau darauf, das diese (die angefragte) Zeile eher überflüssig ist. (fehlt ein copy oder echo).
Da du mit deinem Skript zufrieden bist, hat sich die Frage ja erübrigt, wollte dich nicht nur "D*mm" sterben lassen.
Gruß
Zu deiner Frage, dass macht nichts weil es nicht funktioniert hat.
"* Bei Umleitung mit einfachem Pfeil in einem bedingtem Befehl..
z.B. IF errorlevel 1 echo irgendwas > DATEI
wird die Ausgabedatei neu angelegt, BEVOR die Bedingung geprüft wird.
D.h. wenn die Bedingung NICHT WAHR ist, wird trotzdem die Ausgabedatei mit 0 Bytes erzeugt.
Falls die Datei bereits vorhanden war, wird sie damit zerstört."
"* Bei Umleitung mit einfachem Pfeil in einem bedingtem Befehl..
z.B. IF errorlevel 1 echo irgendwas > DATEI
wird die Ausgabedatei neu angelegt, BEVOR die Bedingung geprüft wird.
D.h. wenn die Bedingung NICHT WAHR ist, wird trotzdem die Ausgabedatei mit 0 Bytes erzeugt.
Falls die Datei bereits vorhanden war, wird sie damit zerstört."
Lass dich nicht von jedem, der eine Webseite mit Zeichensalat füllen kann verpochern
für MS-DOS bis V7.0, Stand: Juni 98
- steht in der Überschrift - obwohl ich das eher nicht glaube, daß das Verhalten unter DOS 7 jemals so gewesen wäre .
Und meine Frage zielte genau darauf, das diese (die angefragte) Zeile eher überflüssig ist. (fehlt ein copy oder echo).
Da du mit deinem Skript zufrieden bist, hat sich die Frage ja erübrigt, wollte dich nicht nur "D*mm" sterben lassen.
Gruß