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

gelöst Hex Zeichen mittels Batch in Dateien vergleichen

Mitglied: knechtibus

knechtibus (Level 1) - Jetzt verbinden

19.08.2009, aktualisiert 18.10.2012, 6514 Aufrufe, 21 Kommentare

Hallo miteinander,

ich habe ein kleines 3 Dateien Problem. In der Datei dat1.txt stehen mehrere Hexwerte untereinander,z.B.:

40000001
80000001
40000002
80000002
40000003
...
...

Nun soll in einer Datei dat2 nach genau diesen Hexwerten gesucht werden und wenn ein Wert nur einmal auftritt, soll dieser dann in die Datei dat3.txt kopiert werden. Hatte schonmal ein ähnliches Problem, da ging es aber um ganz normale ASCII-Zeichen. Hier ist es nun zwingend notwendig nach den jeweiligen Hexzeichen aus dat1.txt zu suchen.
Freue mich auf eure Antworten.

MfG
knechtibus
Mitglied: bastla
19.08.2009 um 12:36 Uhr
Hallo knechtibus!

Da ohnehin immer nach Text gesucht wird, ist es egal, ob dieser Text als Hexwert interpretiert werden kann ...
01.
@echo off & setlocal 
02.
set "D1=D:\dat1.txt" 
03.
set "D2=D:\dat2.txt" 
04.
set "D3=D:\dat3.txt" 
05.
 
06.
if exist "%D3%" del "%D3%" 
07.
for /f "usebackq" %%i in ("%D1%") do call :ProcessLine "%%i" 
08.
goto :eof 
09.
 
10.
:ProcessLine 
11.
for /f %%i in ('find /i /c %1^<"%D2%"') do set "Anzahl=%%i" 
12.
if %Anzahl%==1 >>"%D3%" echo %~1 
13.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: 81825
19.08.2009 um 12:55 Uhr
Hi,
wozu die Abfrage? Die Datei soll doch in jedem Fall weg.

06. if exist "%D3%" del "%D3%"
01.
del "%D3%"  2>nul
Bitte warten ..
Mitglied: knechtibus
19.08.2009 um 13:18 Uhr
Hallo bastla,

vielen Dank für deinen Lösungsvorschlag. Das Problem nur ist das die Werte aus dat1 in dat2 nur als ASCII vorliegen(also irgendwelche kryptischen Sonderzeichen). Ich kann also nicht nur nach den Strings aus dat1 suchen sondern müsste irgendwie die ASCII zeichen als die Hexwerte die sie ja sind, interpretieren.

MfG
knechtibus
Bitte warten ..
Mitglied: 81825
19.08.2009 um 13:43 Uhr
Zitat von knechtibus:
Das Problem nur ist das die Werte aus dat1 in dat2 nur als ASCII vorliegen(also
irgendwelche kryptischen Sonderzeichen).

Dann wäre es doch sicher sinnvoll, du würdest hier mal ein konkretes Beispiel vorlegen.
Bitte warten ..
Mitglied: bastla
19.08.2009 um 13:44 Uhr
@81825
wozu die Abfrage?
Obwohl ich ohnehin dazu neige, "quick & dirty" zu coden, habe ich trotzdem eine gewisse Hemmung, einen (wenn auch behandelten) Fehler vorsätzlich zu produzieren ...

... aber natürlich funktioniert Dein Vorschlag.

Grüße
bastla
Bitte warten ..
Mitglied: 81825
19.08.2009 um 13:47 Uhr
Ein FCB muss in jedem Fall angelegt werden, ob nun mit FindFirst oder mit EraseFile. Ich sehe in meiner Vorgehensweise keinen absichtlich produzierten Fehler.
Bitte warten ..
Mitglied: bastla
19.08.2009 um 13:48 Uhr
Hallo knechtibus!

Weshalb stellst Du die gesuchten Zeichen dann nicht auch gleich in der gewünschten Schreibweise in die "dat1.txt"?

Soferne, wie es sich für mich liest, in "dat2.txt" (ASCII?- / ANSI?- / Unicode?-)Zeichen stehen, ist es sinnvoller, VBS zu verwenden (wenn es dagegen keine Einwände gibt) ...

Grüße
bastla
Bitte warten ..
Mitglied: bastla
19.08.2009 um 13:49 Uhr
@81825
Ich sehe in meiner Vorgehensweise keinen absichtlich produzierten Fehler.
Warum dann das schamhafte "2>nul"?

Grüße
bastla
Bitte warten ..
Mitglied: 81825
19.08.2009 um 13:56 Uhr
Stimmt. Darauf könnte man verzichten. Wenn das in einem Batch mit mehreren Befehlen ausgeführt wird, sieht die Meldung "Datei nicht gefunden" sowieso niemand
Bitte warten ..
Mitglied: knechtibus
24.08.2009 um 10:18 Uhr
Hallo,

angeregte Diskussion scheint das ja hier zu sein Möchte euch auf jeden Fall für eure Ideen danken. Mit VBS hab ich leider null Erfahrung insofern fällt das erstmal flach oder etwas geschriebenes müsste mir erklärt werden Die Konvertierung des jeweiligen HEX Wertes in ein ASCII zeichen hab ich jetzt nochmal ausprobiert, klappt aber leider auch nicht. Naja mal schauen ob ich evtl. doch noch was finde.

MfG
knechtibus
Bitte warten ..
Mitglied: bastla
24.08.2009 um 17:20 Uhr
Hallo knechtibus!

Solange Du nicht den Zusammenhang zwischen Datei1 und Datei2 (= die Codierung) geklärt hast und auch kein Beispiel der Datei2 postest (mit "Code"-Formatierung), wirst Du wohl tatsächlich selbst die Lösung finden müssen ...

Grüße
bastla
Bitte warten ..
Mitglied: knechtibus
25.08.2009 um 09:02 Uhr
Hallo bastla,

entschuldige, dass hab ich wirklich noch nicht so richtig klar gemacht. Also die Datei 1 ist eine ganz normale .txt, die Datei 2 im Format .rf7 und das ist evtl. auch ein Problem. Die Werte in Datei 1 liegen wie folgt vor:

01.
40000001 
02.
80000001 
03.
40000002 
04.
80000002 
05.
40000003
Die .rf7 Datei mit dem Editor geöffnet präsentiert sich folgendermaßen, nur kryptische Sonderzeichen:

01.
      A   @          g 4  #                  ÿ                     A   €         g 4  #                  ÿ              
In Datei 2 sind die interessanten Zeichen das "@" + 3 Zeichen und das "€" + 3 Zeichen. Diese repräsentieren in diesem Fall die ersten beiden HEX-Werte aus Datei 1.
Tja so siehts aus, ich weiß nun nicht ob VBS das vollbringen kann die Werte aus dat1.txt in dat2.rf7 zu suchen und nur dann in dat3.txt zu kopieren, wenn sie nur 1 mal in dat2.rf7auftreten.
Ich hoffe der Zusammenhang ist nun etwas klarer geworden?!

MfG
knechtibus
Bitte warten ..
Mitglied: bastla
25.08.2009 um 10:12 Uhr
Hallo knechtibus!

Dann versuch es mal damit:
01.
Set fso = CreateObject("Scripting.FileSystemObject") 
02.
D1 = "D:\dat1.txt" 
03.
D2 = "D:\dat1.txt" 
04.
D3 = "D:\dat1.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
Gespeichert werden muss das Script mit der Endung ".vbs". Falls in der "dat3.txt" der Hexcode aus "dat1.txt" stehen soll, in Zeile 15 "WriteLine P" durch "WriteLine C" ersetzen.

Eine Erklärung dazu gibt's bei Bedarf später ...

Grüße
bastla
Bitte warten ..
Mitglied: knechtibus
25.08.2009 um 10:33 Uhr
Hallo bastla,

ich danke dir für deine Antwort. Zu aller erst: ich denke mal die drei Variablen die am Anfang benannt werden, sollen unterschiedlich sein ;) Das hab ich mal in meiner Unkenntnis interpretiert. Wenn ich das Script nun ausführe ackert mein Rechner ca. 5 Sekunden lang und dann kommt eine Fehlermeldung:

Runtime Error
Program: C:\WINNT\System32\WScript.exe
abnormal program termination

Könnte es daran liegen das eine der Dateien sehr groß ist?! (Die Datei dat2.rf7 ist ca. 50 MB groß)

MfG
knechtibus
Bitte warten ..
Mitglied: knechtibus
25.08.2009 um 10:58 Uhr
Hallo bastla,

es lag wirklich an der Dateigröße, habs gerade nochmal mit einer kleineren Datei ausprobiert. Allerdings kaum ist das eine Problem behoben, zeigt sich auch gleich das nächste. Beim Ausführen wird folgende Fehlermeldung ausgegeben:

Skript: C:\Test_HEX.vbs
Zeile: 12
Zeichen: 9
Fehler: Typen unverträglich: '[string: "&H @"]'
Code: 800A000D
Quelle: Laufzeitfehler in VBScript

Damit kann ich leider nicht so viel anfangen

MfG
knechtibus
Bitte warten ..
Mitglied: bastla
25.08.2009 um 14:42 Uhr
Hallo knechtibus!

Die Fehlermeldung deutet auf einen nicht als Hexwert interpretierbaren Inhalt der "dat1.txt" hin - in der angegebenen Scriptzeile werden jeweils 2 Zeichen zu einem 8-Bit-Hexwert kombiniert, mit der Funktion Chr() in das entsprechende (ANSI-) Zeichen umgewandelt und dem Suchstring P hinzugefügt.

Die Umwandlung muss natürlich scheitern, wenn der Ausgangs(Hex-)wert " @" lautet ...

Grüße
bastla

P.S.:
Zu aller erst: ich denke mal die drei Variablen die am Anfang benannt werden, sollen unterschiedlich sein ;)
Typischer Fall von Verschlimmbesserung - ich hatte ursprünglich Parameter verwendet, wollte das Script dann zum Testen vereinfachen und habe den Dateinamen beim Posten zwar noch an die entsprechenden Stellen kopiert, aber dann nicht mehr angepasst - sorry, aber Du hast ja richtig analysiert und korrigiert ...
Bitte warten ..
Mitglied: bastla
25.08.2009 um 14:46 Uhr
Kommentar nach oben verschoben ...
Bitte warten ..
Mitglied: knechtibus
25.08.2009 um 15:15 Uhr
Hallo bastla,

Die Fehlermeldung deutet auf einen nicht als Hexwert interpretierbaren Inhalt der "dat1.txt" hin

was so viel bedeutet wie? Das VBS mit den Werten aus dat1.txt nicht klar kommt? Kann man dem irgendwie abhilfe schaffen?

MfG
knechtibus
Bitte warten ..
Mitglied: bastla
25.08.2009 um 15:23 Uhr
Hallo knechtibus!

Dass VBS mit den Werten aus dat1.txt nicht klar kommt?
Wenn in der "dat1.txt" nur Hexwerte stehen (genauer: alle Zeilen nur eine gerade Anzahl von Zeichen aus dem Bereich "0" bis "9" und "A" bis "F" bzw "a" bis "f" - also etwa keine Leerzeichen - enthalten), dürfte es kein Problem geben - zumindest werden Deine oben geposteten Beispielzeilen problemlos verarbeitet.

Grüße
bastla
Bitte warten ..
Mitglied: knechtibus
26.08.2009 um 08:21 Uhr
Hallo bastla,

ich hatte aus versehen noch ein @ in der dat1.txt zu stehen. Schön blöd, hätte ich auch selbst mal drauf kommen bzw. nachgucken können. Nun wird keine Fehler mehr angezeigt und die .vbs ausgeführt. Das Problem das jetzt noch besteht: Es wird trotz nur einmalig auftretenden HEX-Werten keine dat3.txt angelegt. Habe die HEX-Werte aus dat1.txt extra noch mit einem HEX-Editor in dat2.txt gesucht um sicher zu sein, dass diese wirklich nur einmal auftreten. Genau diese nur einmal auftretenden Werte sollen ja in die dat3.txt geschrieben werden. Das Script wird auf jeden Fall ausgeführt denn der Rechner arbeitet ein paar Sekunden und eine vorher erstellte, leere dat3.txt wird gelöscht.
Interpretiert er die HEX-Werte evtl. einzeln und nicht als die 4-Zeichen-Folge die sie eigentlich darstellen?

MfG
knechtibus
Bitte warten ..
Mitglied: knechtibus
01.09.2009, aktualisiert 18.10.2012
Hallo miteinander,

da es ja offensichtlich mit VBS besser zu realisieren ist, markiere ich diesen Beitrag mal als gelöst und es kann weiter in dem entsprechenden VBS Beitrag diskutiert werden.

https://www.administrator.de/forum/mit-vbs-hex-werte-aus-textdatei-ausle ...

MfG
knechtibus
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch vergleich von zwei dateien
gelöst Frage von realdavegerBatch & Shell6 Kommentare

Hallo, nach Jahrelangem zugucken, habe ich jetzt schlussendlich eine Frage welche ich selbst stelle. Ich versuche 2 zeiten aus ...

Batch & Shell
Batch vergleiche Dateien mit Zeitstempel
gelöst Frage von Streuner1Batch & Shell5 Kommentare

Hallo, ich möchte mit einer batch in einem Ordner Dateien mit einem Zeitstempel suchen, vergleichen, kopieren und löschen. Möglichkeiten: ...

Batch & Shell
Batch Vergleichen von Dateien
gelöst Frage von BlaberBatch & Shell2 Kommentare

Hallo Leute, ich habe ein kleines Problem bei einer Batch-Datei. In dieser versuche ich zwei Text-Dateien miteinander zu vergleichen, ...

Batch & Shell
Kopierte Dateien per Batch vergleichen
Frage von dobym24Batch & Shell7 Kommentare

Hallo zusammen, ich habe folgendes Problem und mittlerweile Tage im Internet verbracht um eine Lösung zu findenLeider erfolglos Ich ...

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 17 StundenWindows 103 Kommentare

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 20 StundenAdministrator.de Feedback14 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 1 TagHumor (lol)4 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 2 TagenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Server Hardware
Welche Rolle spielt Design bei Enterprise IT Hardware?
Frage von ApolloXServer Hardware17 Kommentare

Ich arbeite für einen internationalen Elektronikhersteller in der Forschung und meine Aufgabe ist es, Feedback von Nutzern in Hinsicht ...

Windows Network
WSUS4 und Windows 10 Updates automatisch installieren
Frage von sammy65Windows Network15 Kommentare

Hallo miteinander, ich habe mit einen neuen WSUS Server aufgesetzt Server 2016 darauf einen aktuellen WSUS. Grund, wir stellen ...

Memory Cards
Vergessliche USB-Sticks?
Frage von hanheikMemory Cards14 Kommentare

Ich habe in den letzten Tagen 500 USB-Sticks mit Bilddateien bespielt. Obwohl ich die Dateien mit größter Sorgfalt kopiert ...

Hyper-V
Hyper-V mit altem XEON-Server. Was ist falsch?
Frage von LollipopHyper-V11 Kommentare

Hallo Bin etwas frustriert. Kleinbetrieb, ca. 15 PC's, 2 Stk. Server mit einigen virtuellen PC's für Fernwartung, VaultServer für ...