Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Comp Befehl - Ist das möglich ?

Frage Entwicklung Batch & Shell

Mitglied: barkingdog

barkingdog (Level 1) - Jetzt verbinden

12.01.2009, aktualisiert 13:02 Uhr, 5322 Aufrufe, 7 Kommentare

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.

01.
@echo off & setlocal  
02.
set "Anrufe=D:\ANRUFE.TXT"  
03.
set "AnrufeTemp=D:\ANRUFETEMP.TXT" 
04.
set "CTILOG=D:\CTILOG.TXT"  
05.
 
06.
:Loop  
07.
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 
08.
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 
09.
comp %ANRUFETEMP% %ANRUFE% 
10.
if %ERRORLEVEL% EQU 0 del %ANRUFETEMP% else %ERRORLEVEL% EQU 5 %ANRUFETEMP% > %ANRUFE% 
11.
sleep 40 
12.
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.
01.12.2008,09:46:01, 100,       +49 (555) 66666,  ja,ein,       9,                     100,                     100 
02.
01.12.2008,10:00:41, 100,       +49 (777) 88888,  ja,aus,    14,                     100,                     100
Mitglied: 60730
12.01.2009 um 13:14 Uhr
Servus,

grob drüber gesehen:

nimm anstatt
comp
FC

Nimm anstatt
IF exist D:\ANRUFE.TXT
IF exist %ANRUFE%

Macht mehr Sinn eine Variable nicht nur zu deklarieren sondern auch zu benutzen.

Gruß
Bitte warten ..
Mitglied: barkingdog
12.01.2009 um 13:26 Uhr
Hallo,

ich habe jetzt den "comp"-Befehl mit dem "fc"-Befehl ersetzt. Allerdings ohne Erfolg.

01.
fc %ANRUFETEMP% %ANRUFE% 
02.
if %ERRORLEVEL% EQU 0 del %ANRUFETEMP% else %ERRORLEVEL% EQU 1 %ANRUFETEMP% > %ANRUFE% 
03.
sleep 40 
04.
goto :Loop
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.
Bitte warten ..
Mitglied: 60730
12.01.2009 um 13:32 Uhr
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.

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ß
Bitte warten ..
Mitglied: barkingdog
13.01.2009 um 14:48 Uhr
Also auch das neu starten hat nichts gebracht fc fragt bei mir dennoch nach.
Jedenfalls habe ich es mittlerweile geschafft es zum Laufen zu bringen. Ich bin beim Comp geblieben und lasse
es automatisch beantworten.
Bitte warten ..
Mitglied: 60730
13.01.2009 um 15:13 Uhr
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

if %ERRORLEVEL% EQU 0 del %ANRUFETEMP% else %ERRORLEVEL% EQU 1 %ANRUFETEMP% > %ANRUFE%

Gruß
Bitte warten ..
Mitglied: barkingdog
13.01.2009 um 15:22 Uhr
01.
@echo off & setlocal  
02.
set "Anrufe=D:\ANRUFE.TXT"  
03.
set "AnrufeTemp=D:\ANRUFETEMP.TXT" 
04.
set "CTILOG=D:\CTILOG.TXT"  
05.
set "Antwort=D:\antwort.txt" 
06.
set "Puffer=D:\bla.txt" 
07.
set "variable=n" 
08.
 
09.
:Loop  
10.
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 
11.
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 
12.
goto :vergleich 
13.
 
14.
:vergleich 
15.
echo %variable% >%antwort% 
16.
comp  %AnrufeTemp% %ANRUFE%<%antwort% 
17.
echo %ERRORLEVEL% 
18.
if  %ERRORLEVEL%==1 goto :Ungleich 
19.
if  %ERRORLEVEL%==0 del /q %AnrufeTemp% goto :Loop 
20.
sleep 5 
21.
goto :Loop 
22.
 
23.
:Ungleich 
24.
type nul > %Anrufe% 
25.
for /f "tokens=1-10 delims=," %%a in ('findstr /c:", 111" "%CTILOG%"^|findstr /c:",ein"')do >>"%Anrufe%"  echo %%a,%%b,%%c,%%d,%%e,%%f 
26.
del /q %AnrufeTemp% 
27.
goto :Loop
Also so sieht jetzt die fertige Lösung aus.
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."

Quelle: http://www.antonis.de/dos/batchtut/bat-kurs/index.htm#14


Eigentlich sollte es, wenn es denn funktioniert hätte, etwaige Änderungen in die Anrufe.txt schreiben sollen.
Hm ob da ein echo oder copy fehlt weiss ich nicht, ich kenn mich mit dem Ganzen nicht so gut aus.
Ich bin froh dass ich es überhaupt irgendwie geschafft habe.

Ich bin dir dankbar für deine Hilfe, aber aus irgend einem Grund hat es halt einfach nicht funktionieren wollen.
Leider weiss ich nicht warum.
Bitte warten ..
Mitglied: 60730
14.01.2009 um 10:12 Uhr
Servus,

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."

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ß
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Windows Netzwerk
Kein RDP über VPN per MS-TSC möglich (9)

Frage von survial555 zum Thema Windows Netzwerk ...

Microsoft
Keine Anmeldung mehr möglich (Server 2012 R2) (4)

Frage von Shnuuu zum Thema Microsoft ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (17)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Windows 10 RDP geht nicht (16)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...