Top-Themen

Aktuelle Themen (A bis Z)

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

Frage Entwicklung VB for Applications

GELÖST

Mit VBS Hex-Werte aus Textdatei auslesen und mit anderen vergleichen

Mitglied: knechtibus

knechtibus (Level 1) - Jetzt verbinden

28.08.2009, aktualisiert 14:29 Uhr, 8477 Aufrufe, 8 Kommentare

Hallo miteinander,

ich habe zwei Textdateien vorliegen, aus denen bestimmte Werte miteinander verglichen werden sollen. Die dat1.txt enthält Hex-Werte in folgender Formatierung:

01.
40000018 
02.
80000018 
03.
40000019 
04.
80000019 
05.
4000001A 
06.
8000001A 
07.
... 
08.
...
Diese Werte sollen Zeile für Zeile ausgelesen werden und dann in der dat2.txt gesucht werden. Soweit eigentlich kein Problem aber die Werte liegen in der dat2.txt nur als kryptische Sonderzeichen vor:

01.
      A   @          g 4  #                   
02.
       A   €         g 4  #                   
03.
... 
04.
...
Wenn die in dat1.txt eingelesenen Werte nur 1 mal in dat2.txt vorkommen, sollen genau diese Werte in die Datei dat3.txt geschrieben werden. Folgendes habe ich schon selbst ausprobiert aber leider immer ohne Erfolg.

01.
Set fso = CreateObject("Scripting.FileSystemObject") 
02.
D1 = "C:\test HEX\dat1.txt" 
03.
D2 = "C:\test HEX\dat2.txt" 
04.
D3 = "C:\test HEX\dat3.txt" 
05.
 
06.
T = fso.OpenTextFile(D2).ReadAll 
07.
If fso.FileExists(D3) Then fso.DeleteFile(D3) 
08.
H = Split(fso.OpenTextFile(D1).ReadAll, vbCrLF) 
09.
For Each C In H 
10.
    P = "" 
11.
    For i = 1 To Len(C) Step 2 
12.
        P = P & Chr("&H" & Mid(C, i, 2)) 
13.
    Next 
14.
    X = InStr(T, P) 
15.
    If X > 0 And X < Len(T) Then If InStr(X + 1, T, P) = 0 Then fso.OpenTextFile(D3, 8, True).WriteLine P 
16.
Next
Das Problem hierbei ist, dass die Werte aus dat1.txt immer nur als 1 einzelnes ASCII Zeichen übersetz werden. Somit wird der Wert nicht in die dat3.txt geschrieben, obwohl der Wert nicht in der dat2.txt enthalten ist. Hoffe einer von euch hat eine Idee wie ich das Script noch retten kann. Freu mich auf eure Antworten.

MfG
knechtibus
Mitglied: waldgnarf
28.08.2009 um 20:02 Uhr
Hi knechtibus, meine Idee währe das du erstmal in deinem Script die kryptischen Sonderzeichen in dat2.txt übersetzt und dann mit dem Vergleichen anfängst.

Übrigens geht das Vergleichen mit ner Bat noch einfacher glaube ich. :
fc text01.txt text02.txt > logUNTERSCHIEDE.txt

Ich hoffe das ich dir helfen konnte.

Gruß waldgnarf
Bitte warten ..
Mitglied: 76109
29.08.2009 um 14:00 Uhr
Hallo knechtibus!

Sorry, habe mich leider geirrt und die Antwort daher entfernt.

Gruß Dieter
Bitte warten ..
Mitglied: bastla
30.08.2009 um 12:07 Uhr
@76109
Der Hexwert 0 Chr("&H00") geht nicht, weil mit 0 das Stringende (EndOfString=0) definiert wird.
Nur als Anmerkung: Für VB(S) stimmt diese Aussage nicht - Chr(0) wird wie jedes andere Zeichen in einem String behandelt (was ja auch aus Deiner "DAT1.TMP" ersichtlich ist) und auch durch InStr() richtig ausgewertet - nachvollziehen kannst Du Letzteres, indem Du per HexEditor in "dat2.txt" anstelle der (durch die Forensoftware konvertierten?) Leerzeichen (Hex "20") passende "00"-Character (und auch ein im Beispiel gar nicht vorhandenes zB "1A"), damit es tatsächlich einen dem Suchmuster entsprechenden Teilstring gibt, schreibst und dann das Script aus dem Eröffnungsbeitrag darauf anwendest ...

... allerdings setzt dies voraus, dass "dat2.txt" ANSI-codiert wäre, was aber vermutlich beim Original nicht der Fall und damit der Grund des Scheiterns ist.

Grüße
bastla
Bitte warten ..
Mitglied: 76109
30.08.2009 um 13:35 Uhr
Hallo bastla!

Ups, Du hast Recht und ich mich zu meiner Verwirrung geirrt

Ich war der Überzeugung, das ein Stringende mit Chr(0) gekennzeichnet wird und dachte daher das die String-Variable P nicht funktioniert.

Gruß Dieter
Bitte warten ..
Mitglied: knechtibus
31.08.2009 um 09:12 Uhr
Hallo waldgnarf,

ich wollte es anfänglich eigentlich auch mit einer Batch Datei realisieren aber das stellte sich dann doch heraus das VBS eigentlich besser dazu geeignet scheint. Trotzdem vielen Dank für deine Idee.

MfG
knechtibus
Bitte warten ..
Mitglied: knechtibus
01.09.2009 um 08:54 Uhr
Hallo miteinander,

ich werd mal den neuesten Stand kund tun. Folgendes Script ist im Moment aktuell:

01.
Set fso = CreateObject("Scripting.FileSystemObject") 
02.
D1 = "C:\test HEX\dat1.txt" 
03.
D2 = "C:\test HEX\dat2.txt" 
04.
D3 = "C:\test HEX\dat3.txt" 
05.
 
06.
If fso.FileExists(D3) Then fso.DeleteFile(D3) 
07.
H = Split(fso.OpenTextFile(D1).ReadAll, vbCrLF) 
08.
For Each C In H 
09.
    P = "" 
10.
    For i = 1 To Len(C) Step 2 
11.
        P = P & Chr("&H" & Mid(C, i, 2)) 
12.
    Next 
13.
 
14.
    Anzahl = 0 
15.
    Set D2Datei = fso.OpenTextFile(D2) 
16.
    Do Until D2Datei.AtEndOfStream 
17.
        T = D2Datei.ReadLine 
18.
        X = InStr(T, P) 
19.
        Do While X > 0 And X < Len(T) 
20.
            Anzahl = Anzahl + 1 
21.
            X = InStr(X + 1, T, P) 
22.
        Loop 
23.
        If Anzahl > 1 Then Exit Do 
24.
    Loop 
25.
    D2Datei.Close 
26.
     
27.
    If Anzahl = 1 Then fso.OpenTextFile(D3, 8, True).WriteLine C 
28.
Next
Das Script startet ordnungsgemäß und der Rechner arbeitet auch bei größeren Dateien ca. 30s. Dann jedoch wird leider keine dat3.txt erstellt, obwohl manche HEX-Werte aus der dat1.txt in der dat2.txt nur einmal auftreten.

@ bastla
Lässt sich so evtl. besser diskutieren

MfG
knechtibus
Bitte warten ..
Mitglied: waldgnarf
02.09.2009 um 11:41 Uhr
Hi, klappt es mit

01.
fso.CreateTextFile(DATEI, True)
?

Gruß waldgnarf
Bitte warten ..
Mitglied: knechtibus
02.09.2009 um 11:59 Uhr
Hallo waldgnarf,

nein leider funktioniert es damit auch nicht Es scheint so als würde er die Zeilen aus dat1.txt einfach nicht in der dat2.txt finden. Deswegen ist Anzahl ungleich 1 und es wird keine dat3.txt erstellt.

Ich hab aber schon 3 mal überprüft das die Zeilen in dat1.txt wirklich nur 1 mal in dat2.txt vorhanden sind. Komisch...

MfG
knechtibus
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Powershell: Wert aus Registry auslesen und mit vorhandenem Wert vergleichen
gelöst Frage von BrowserlauserBatch & Shell5 Kommentare

Hallo, ich stehe vor folgendem Problem: Ich möchte per Powershell aus der Registry einen bestimmten Wert auslesen. Beispiel: in ...

Batch & Shell
Wert aus Registry in Textdatei speichern - Batch oder VBS
gelöst Frage von ResolvBatch & Shell2 Kommentare

Hallo in die Runde, ich habe es leider nicht so mit Batch und Co. Ich würde gerne die letzen ...

Batch & Shell
Textdateien vergleichen BATCH
gelöst Frage von FeudelFredBatch & Shell2 Kommentare

Moin Moin, ich bin komplett neu im Forum und habe auch keine sonderlich großen Erfahrungen mit Foren. Habe eine ...

Batch & Shell
Zahlen aus Textdatei in Batch vergleichen
gelöst Frage von yspke24Batch & Shell7 Kommentare

Hi, ich habe schon stundenlang im Internet gesucht, konnte aber nichts Passendes finden. Ich habe eine Textdatei "time.log". In ...

Neue Wissensbeiträge
Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 13 StundenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 13 StundenSicherheit7 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 14 StundenSicherheit9 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Sicherheit

Meltdown und Spectre: Die machen uns alle was vor

Information von Frank vor 14 StundenSicherheit12 Kommentare

Aktuell sieht es in den Medien so aus, als hätten die Hersteller wie Intel, Microsoft und Co den aktuellen ...

Heiß diskutierte Inhalte
Windows 10
Netbook erkennt Soundkarte nicht - keinerlei Info zum Hersteller und Modell vom Netbook und Hardware bekannt
Frage von 92943Windows 1031 Kommentare

Guten Tag, meine Schwester reist in einigen Wochen für ein paar Monate ins Ausland und hat sich dafür ein ...

Batch & Shell
Anmeldevorgang für Informatikraum (Schule) unter Windows
gelöst Frage von IngenieursBatch & Shell29 Kommentare

Hey zusammen, ich werde in naher Zukunft den Informatik Raum meiner jetzigen Schule von dem aktuellen Betreiber übernehmen (Vertrag ...

Netzwerkgrundlagen
Welches Modem für VDSL 50000 der T-Com
Frage von Windows10GegnerNetzwerkgrundlagen20 Kommentare

Hallo, ein Kollege von mir will sich VDSL50000 von der T-Com holen, um daran einen Server zu betreiben. Ich ...

Batch & Shell
AD-Abfrage in Batchdatei und Ergebnis als Variable verarbeiten
gelöst Frage von Winfried-HHBatch & Shell19 Kommentare

Hallo in die Runde! Ich habe eine Ergänzungsfrage zu einem alten Thread von mir. Ausgangslage ist die Batchdatei, die ...