Jump to content
Sign in to follow this  
mapi4780

.bat wörter zählen und vergleichen

Recommended Posts

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

Edited by mapi4780

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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-

Share this post


Link to post
Share on other sites

Excel:

Spezialfilter der Liste ohne Duplikate an andere Stelle kopieren und dann mit =zählenwenn() zählen.

 

Und einen Vergleich gibts auch mit =wenn() oder =verweis() (letzteres, wenn man eine Liste vergleichen möchte).

Share this post


Link to post
Share on other sites
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte überlege Dir, ob es nicht sinnvoller ist ein neues Thema zu erstellen.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

Werbepartner:



×
×
  • Create New...