Jump to content

.bat wörter zählen und vergleichen


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Guten Morgen!

 

Ich bräuchte Hilfe bei einem Code-Stückchen.

 

Folgende Situation:

Ich habe aus einem Logfile des Mailservers die Daten eines versuchen Angriffs extrahiert. dieses "domain.txt" (file 0) enthält nun nur noch die Domainnamen bei denen der Angriff versucht wurde.

 

Nun habe ich in diesem File aber für jeden Versuch einen Eintrag.

 

domainA

domainA

.....(noch 7000 mal)

domainA

domainB

domainB

...usw.

 

Ich würde aus diesem txt gerne folgende Infos in ein neues txt übernehmen

(file A)

 

domainA (wie oft im file)

domainB (wie oft im file)

 

 

Schritt 2

in einem anderen txt file (file B) habe ich sämtliche domains welche bei mir liegen

Diese würde ich gerne mit der erstellten liste oben vergleichen um zu sehen wieviele "meiner domains" gezielt attackiert wurden.

 

 

Codeidee

merke dir wort A in file A

ist das nächste wort in file A = dem vorigen zähler +1

ist das nächste wort anders -> schreibe wortA und zählerstand in file B

gehe zum nächsten wort

 

 

 

Codeidee 2

vergleiche file B (alle meine domains) mit file A

zeile 1 in file B in file A vorhanden? -> schreibe "gefunden" hinter den eintrag

 

 

 

in beiden textfiles sind die domains wie folgt

domain.at

domain2.at

domain3.de

etc...

 

 

 

Zu guter Letzt sollte eine Übersicht rauskommen

 

Domain.at - liegt bei mir - xxxxx mal angegriffen

Domain.at - liegt bei mir - nicht angegriffen

Domain.at - liegt nicht bei mir

 

 

Es gilt herauszufinden ob es sich um "zufällige" domains gehandelt hat oder ob gezielt vorgegangen wurde. Das Logfile ist ein paar hundert MB groß und es sind doch etliche 10tsd Zeilen Text was das auswerten nicht grad einfach macht.

 

 

 

Leider will mir kein wirklich "gangbarer Weg" einfallen das per .bat umzusetzen.

Kann mir jemand den notwendigen "Tipp" geben?

 

Danke

 

 

Edit: Nachtrag:

 

Mein Hauptproblem ist die definition der richtigen for schleife. bzw. den Bedingungen innerhalb der Schleife.

 

wie bekomme ich eine if / else bedingung in eine for schleife?

 

set zaehler=1 (vorkommen des domainnamens)

set var=0 (steht dann für den domainname)

 

for /f %%i in (domains1.txt) do (

 

if %%i==%var% zaehler=%zaehler%+1

else (

echo %zaehler% >>result.txt

echo %%i >>result.txt

set var=%%i

 

)

führt dazu dass er statt 7654 einträge für die erste domain nur 1300 überträgt und nur mit der zahl eins.. ??

bearbeitet von mapi4780
Link zu diesem Kommentar

Hallo Mapi,

Darf ich dich mal fragen, warum du zur Lösung dieser Aufgabe eine Technologie aus dem letzten Jahrtausend benützen willst? Im Vergleich zur heutigen Scripting-Technik -sprich Powershell- ist .bat-Programmierung nur noch Masochismus.

 

Ums mal konkret zu zeigen. Der erste Teil deiner Aufgabe ließe sich in PSH zum beispiel so umsetzen:

 

$Path="C:\temp\domains.txt"
$words="domain0","domain1","domain2"

foreach($word in $words){
$anzahl = (select-string -path $path -pattern "$word").count 
 "$word $anzahl"
}

 

herauskommen würde dann etwa Folgendes

 

domain0 651
domain1 7
domain2 4

 

Mit PSH

- kannst du reguläre Ausdrücke benutzen

- brauchst du keine Hilfstextdateien für Zwischenergebnisse

- findest jede Menge Beispiele im Netz

.....

 

Nicht umsonst sterben .bat und vbs immer mehr aus, wobei .bat/.cmd bereits nahezu tot ist.

 

blub

Link zu diesem Kommentar

Guten Morgen.

Danke für Eure Antworten.

Kollege hatte am Wochenende mehr Zeit als ich und hat´s fertig umgesetzt und automatisiert.

 

 

@ blub

Da ich Scripte nur alle heilige Zeit mal brauche hänge ich da etwas nach :rolleyes:

 

@Norbert

Wie ich das in Excel hinbekommen hätte?! Keinen Schimmer!

 

@Nils

Danke, werd ich mir ansehen.

 

Schönen Start in die Woche

 

-close-

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...