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

Findstr schreibt nur den Zeilenanfang bis Leerzeichen. Zu suchende Zeichenkette korrekt.

Frage Entwicklung Batch & Shell

Mitglied: Smiley

Smiley (Level 1) - Jetzt verbinden

24.01.2010 um 15:36 Uhr, 8297 Aufrufe, 19 Kommentare

Was ist denn unter einem "persönlichem" Vorwort zu verstehen? Soll ich meine Computervorgeschichte hier reinschreiben? Schreiben wer ich bin und was ich tuhe? Mich vorstellen, eben? Ich schreibe hier kein Buch. Das ist eine einfache Frage. Wozu werde ich genötigt ein Vorwort zu verfassen?
Das ist nicht von belang. Wo ist da der Sinn?

Naja,
zu meinem Problem:

Ich wollte, um mir die Arbeit zu vereinfachen, nicht jede IP eines kopierten Textes einzeln rauskopieren, sondern "findstr" die Anweisung geben, dieses zu tun. Manchmal sind es mehr als 60 IPs und da ist mir der Aufwand zu groß.
Die IPs stehen nicht am Zeilenanfang. Das hängt mit Seite zusammen von der ich sie kopiere.

Das sieht dann in etwa so aus:
12/16 62.104.179.121:27015 [Launch] surf_ski_2 8029 14917 5 417 33m37s 176km (109mi) Hamburg, 04 95.03% 0

Ich habe mit folgendem Code probleme die IP rauszukopieren:

del "C:\Dokumente und Einstellungen\xxx\Desktop\ips.txt"
for /f %%i in ('findstr /C ".*\..*\..*\..*:....." "C:\Dokumente und Einstellungen\xxx\Desktop\ipliste.txt"') do ECHO %%i >>"C:\Dokumente und Einstellungen\xxx\Desktop\ips.txt"
Pause

Ausgabe in der ips.txt:
12/16

Wenn ich per Hand die Angabe: 12/16 entferne schreibt er mir die IP rein. Aber dann könnte ich mir das auch sparen.

Warum hängt er sich also daran auf?
Ich hab es auch schon mit /R, /L, usw versucht, aber das bringt nichts.
Bitte um Hilfe.

Mit freundlichen Grüßen
Mitglied: bastla
24.01.2010 um 16:05 Uhr
Hallo Smiley!

"findstr" arbeitet zeilenorientiert - insofern erhältst Du immer zum Suchbegriff passende ganze Zeilen.

Zerlegt wird dann mittels "for /f" anhand von Trennzeichen ("Delimitern") - wenn Du also nur die IP-Adresse (ohne Portangabe) benötigst, wären die passenden Trennzeichen das Leerzeichen (nach "12/16") und der Doppelpunkt (vor dem Port) und der gesuchte Teil ("Token") hat die laufende Nummer 2:
for /f "tokens=2 delims=: " %%i ...
Grüße
bastla

P.S.: Falls "findstr" überhaupt nötig sein sollte (weil nicht in jeder Zeile eine Adresse steht), wäre "/C" durch "/R" zu ersetzen (bzw ersatzlos zu entfernen) ...
Bitte warten ..
Mitglied: Smiley
24.01.2010 um 19:12 Uhr
Was hat "for" mit "findstr" zu tun? Ich dachte "findstr" gibt mir das gefundene aus und "for" ist bloß ne Schleife damit er das in der nächsten Zeile auch macht.
Was mache ich wenn ich 2 Trennzeichen benötige? Also das erste Leerzeichen und nach dem Port das nächste. Den Port brauch ich nämlich auch.

Hm ich teste mal kruz ein bischen rum mit "delims".

Danke erstmal.
Bitte warten ..
Mitglied: Smiley
24.01.2010 um 19:16 Uhr
Ich les gerade das:
delims=xxx - gibt einen Satz von Trennzeichen an, das ersetzt die Standardtrennzeichen TAB und Leerzeichen.
Also trennt er doch beim Leerzeichen.
Wieso brauche ich überhaupt Token?
Bitte warten ..
Mitglied: bastla
24.01.2010 um 19:26 Uhr
Hallo Smiley!
Ich dachte "findstr" gibt mir das gefundene aus
Macht es auch - allerdings immer die komplette Zeile - was Du ja leicht testen kannst, indem Du es ohne "for" verwendest, also:
findstr ".*\..*\..*\..*:....." "C:\Dokumente und Einstellungen\xxx\Desktop\ipliste.txt"
Also trennt er doch beim Leerzeichen.
Nur, wenn keine Trennzeichen angegeben sind oder (wie in meinem Ansatz) das Leerzeichen explizit in den "Satz" aufgenommen wird.

Wenn Du den Port auch behalten willst, wird das Trenzeichen ":" nicht benötigt - dann genügt das (defaultmäßige) Leerzeichen:
for /f "tokens=2" %%i ...
Wieso brauche ich überhaupt Token?
Die "Tokens" sind die Ergebnisse der Trennung - aus Deinem Beispiel entstehen bei Trennung anhand der Leerzeichen :
Token-NrInhalt
1 12/16
2 62.104.179.121:27015
3 [Launch]
4 surf_ski_2
5 ... 8029 14917 5 417 33m37s 176km (109mi) Hamburg, 04 95.03% 0
Davon willst Du nur die Nr. 2 ...

Grüße
bastla
Bitte warten ..
Mitglied: Smiley
25.01.2010 um 16:01 Uhr
Aaah, jetzt hab ich verstanden. Also lass ich delims weg, weil es nur Leerzeichen sind. Gut.

Jetzt habe ich aber noch das Problem, dass manchmal nach dem dritten Leerzeichen erst die IP geschrieben steht:
0/32 (1) 87.106.84.31:27038 [Launch] deathrun_insane 2972 5460 182 202 612s 160km (99mi) , 89.94% 0

Hier gibt er halt nur (1) aus.
"tokens=2,3" funktioniert nicht. Auch "tokens=2,3" oder "2,3,4,5,6,7,8" ändert nichts daran. (Und wäre auch sinnlos.)

Ich verstehe nicht warum es nicht eine einfache Methode dafür gibt... bin doch bestimmt nicht der einzige der eine Liste von IPs benötigt, die er wo anders rauskopiert hat. Ich denke das das in großen Netzwerken bestimmt auch nötig ist, oder in irgendwelchen Firewalls. Nagut, meistens laufen die dann unter Linux etc., aber warum gibt es keine möglichkeit mit "findstr" so etwas zu verwirklichen? Hätte doch bestimmt nicht viel Programmierzeit gekostet und benötigen tuts man immer wieder.

Falls es interessiert: Die Liste von IPs bekomme ich von folgender Seite: www.game-monitor.com
Da kann man Server für Spiele suchen, was bei CS1.6 sinn ergibt, weil man das ingame nur eingeschränkt kann. (Langsam, findet eig. nichts.) Die Liste mit den reinen IPs füge ich dann in HLSW (Half Life Server Watch) ein und habe dort meine, Map abhängigen(!), Listen. Das wäre nur mit HLSW nicht so zu erreichen.

Mit freundlichen Grüßen
Bitte warten ..
Mitglied: Biber
25.01.2010 um 16:41 Uhr
Moin Smiley,

Ich verstehe nicht warum es nicht eine einfache Methode dafür gibt...
bin doch bestimmt nicht der einzige der eine Liste von IPs benötigt, die er wo anders rauskopiert hat.
"Nomen est omen", wie die alten Griechen sagten.... ich finde das toll, dass du trotz Montag so entspannt und flauschig bleibst.
Muss an deinem Sonnenscheinchen-Nick liegen.

Zur Ehrenrettung der Redmonder Skiddies muss ich aber jetzt einwerfen
  • erstens könnte der FindStr-befehl auch durchaus mit Regular Expressions hantieren... und wenn halt (formal betrachtet) zwei "Satzarten" in dieser IP-Liste vorkommen können (mal mit einer zweiten Spalte "(n)" und einer dritten Spalte "Ip:Port" und mal "Sätze" mit dem IP:port-Wert in der zweiten Spalte... ließe sich auch über Findstr trennen und dann halt die IP aus Spalte 2 oder Spalte 3 holen.
  • zweitens ist es aber mit zwei FOR-Anweisungen hintereinander schneller gemacht als ein Nachschlagen der RegExp-Syntax am CMD-Prompt dauert.

Angenommen, wir hätten irgendwo die eine Zeile aus deinem Beispiel griffbereit in einer Variable %oneLine%:
01.
SET "oneLine=0/32 (1) 87.106.84.31:27038 [Launch] deathrun_insane 2972 5460 182 202 612s 160km (99mi) , 89.94% 0"

... nur, damit ich es vorturnen kann am CMD-Prompt natürlich; das erste ">" nicht mit eingeben, is' sich mein Prompt:
01.
>FOR /F "tokens=*" %z in ("%oneline%") do @FOR %i in (%z) do @echo %i|find ":" && @echo set "theIp=%i" 
02.
 
03.
set "theIp=87.106.84.31:27038"
Diese CMD-Oneliner fieselt aus der ganzen Zeile das "Token" raus, das den Doppelpunkt [zwischen IP und Port] enthält und macht damit irgendwas, hier dargestellt durch das Anzeigen von [SET "theIP=%i"]

Geht also schon alles relativ stressarm... das Werkzeug CMD sieht nur so klobig aus....

Grüße
Biber
Bitte warten ..
Mitglied: bastla
25.01.2010 um 16:48 Uhr
...und wenn womöglich später in der Zeile noch ein Doppelpunkt vorhanden wäre, kannst Du mit (diesmal wieder Batch-Schreibweise)
01.
set "theIP=" 
02.
FOR /F "tokens=*" %%z in ("%oneline%") do @FOR %%i in (%%z) do @echo %%i|find ":" && if not defined theIp set "theIp=%%i"
dafür sorgen, dass das erste Vorkommen verwendet wird.

Grüße
bastla
Bitte warten ..
Mitglied: Smiley
25.01.2010 um 18:59 Uhr
Aaaah.

Jetzt geht es:
del "C:\Dokumente und Einstellungen\xxx\Desktop\ips.txt"
FOR /F "tokens=*" %%z in ('findstr ".*\..*\..*\..*:....." "C:\Dokumente und Einstellungen\xxx\Desktop\ipliste.txt"') do @FOR %%i in (%%z) do @echo %%i|find ":" && ECHO %%i >>"C:\Dokumente und Einstellungen\xxx\Desktop\ips.txt"
Pause

Läuft zwar ein bischen langsam, aber eine IP pro Sekunde ist immernoch schneller als selbst rauskopieren und man kann während dessen was anderes machen.
Es sei denn, du weist wie man es schneller hinbekommt. ?

Mit freundlichen Grüßen
Bitte warten ..
Mitglied: bastla
25.01.2010 um 19:10 Uhr
Hallo Smiley!
Es sei denn, du weist wie man es schneller hinbekommt. ?
Etwa, indem das "findstr" vermieden wird - brauchst Du das tatsächlich? Wenn jede Zeile eine Adresse enthielte, ließe sich das Ganze schon mal auf
01.
@echo off & setlocal 
02.
set "Ein=C:\Dokumente und Einstellungen\xxx\Desktop\ipliste.txt" 
03.
set "Aus=C:\Dokumente und Einstellungen\xxx\Desktop\ips.txt" 
04.
 
05.
del "%Aus%" 2>nul 
06.
FOR /F "usebackq tokens=*" %%z in ("%Ein%") do FOR %%i in (%%z) do echo %%i|find ":" && ECHO %%i >>"%Aus%"
reduzieren ...

Grüße
bastla
Bitte warten ..
Mitglied: Smiley
25.01.2010 um 19:49 Uhr
Ist natürliche eine viel coolere Methode. Aber die ist auch nicht schneller. "Find" scheint das Problem zu sein.

Mit freundlichen Grüßen
Bitte warten ..
Mitglied: bastla
25.01.2010 um 20:17 Uhr
Hallo Smiley!

Wenn's wirklich flott sein soll, hast Du mit Batch denn doch nicht unbedingt die besten Voraussetzungen - versuch's mal mit VBS:
01.
EinDatei = "C:\Dokumente und Einstellungen\xxx\Desktop\ipliste.txt" 
02.
AusDatei = "C:\Dokumente und Einstellungen\xxx\Desktop\ips.txt" 
03.
 
04.
Set rE = New RegExp 
05.
rE.Global = True 
06.
rE.Pattern = " \d+\.\d+\.\d+\.\d+\:\d+ " 
07.
 
08.
Set fso = CreateObject("Scripting.FileSystemObject") 
09.
T = fso.OpenTextFile(EinDatei).ReadAll 
10.
 
11.
Set Aus = fso.CreateTextFile(AusDatei) 
12.
For Each Result In rE.Execute(T) 
13.
    Aus.WriteLine Trim(Result.Value) 
14.
Next 
15.
Aus.Close
Grüße
bastla
Bitte warten ..
Mitglied: Biber
25.01.2010 um 20:27 Uhr
@bastla
[OT]
Guck doch mal kurz nach ganz oben in den Eröffnungsbeitrag
Da steht:
...Manchmal sind es mehr als 60 IPs und da ist mir der Aufwand zu groß.

Ja hey! Dann lass den Quatsch doch eine gefühlte Sekunde pro Zeile dauern. So what?
Er muss doch bei einem Batch nicht die Tastatur festhalten, bis die letzte Zeile durchgenudelt ist...
Oder hast du da ein "Bitte warten..." -Fenster eingebaut, dass ihn in seinen Bann zieht?

Ich glaube, das ist das, was unsere Vizekanzlerin immer als Jammern auf hohem Niveau bezeichnet....

Grüße
Biber
[/OT]
Bitte warten ..
Mitglied: bastla
25.01.2010 um 20:38 Uhr
[OT]
@Biber
"Mehr als 60" bedeutet doch: nach oben offen

Die 2 Minuten mehr (im Vergleich zu einer auf das Mengengerüst Bezug nehmenden Antwort - die es aber fast ohnehin geworden wäre) für das Script hatte ich dann auch noch - und außerdem: Wir wollen hier doch über den Anlassfall hinausdenken und zukünftigen Generationen etwas hinterlassen ...

Grüße
bastla
[/OT]
Bitte warten ..
Mitglied: Biber
25.01.2010 um 21:00 Uhr
[nochmal OT]
@bastla
Zitat von bastla:
"Mehr als 60" bedeutet doch: nach oben offen
Oh nein... keine sinnentstellenden Zitate bitte: "Manchmal sind es mehr als 60 IPs...", nicht im Durchschnitt.
und zusätzlich kann es auch sein, dass es ihm nur wie 60 IPs vorkam... so wie vorhin die eine 1 Sekunde pro "Find"-Aufruf..*gg
Wahrscheinlich liefen nebenbei zwei DVD-vom-Netz-auf-Brenner-Schaufel-Aufgaben...

Die 2 Minuten mehr (im Vergleich zu einer auf das Mengengerüst Bezug nehmenden Antwort - die es aber fast ohnehin geworden wäre) für das Script
Na ja... andererseits....
Für die Abarbeitung dieser 60 verträumten IP-Zeilen von einem Game-Server haben ein paar unbezahlbar gute Skript-Virtuosen genauso viele Skript-Zeilen aus der Tastatur geschüttelt... Ob das volkswirtschaftlich vertretbar ist...?
... und zukünftigen Generationen etwas hinterlassen ...
Und wenn die kommenden Generationen noch verwöhnter sind??

Grüße
bastla

Grüße zurück
Biber
[/ nochmal OT]
Bitte warten ..
Mitglied: bastla
25.01.2010 um 21:49 Uhr
[immer noch OT]
@Biber
Oh nein... keine sinnentstellenden Zitate bitte: "Manchmal sind es mehr als 60 IPs...", nicht im Durchschnitt.
Was bist Du heute wieder streng - ah so, is ja noch immer Montach ...
Für die Abarbeitung dieser 60 verträumten IP-Zeilen von einem Game-Server haben ein paar unbezahlbar gute Skript-Virtuosen genauso viele Skript-Zeilen aus der Tastatur geschüttelt... Ob das volkswirtschaftlich vertretbar ist...?
Unter diesem Aspekt (insbes hinsichtlich Game-Server) dürfte der Thread eigentlich schon gar nicht mehr existieren ...
... aber sieh's mal so: vielleicht kann er ein anderes Mal noch so 20, 30 Adressen damit rausholen - dann muss es uns das schon wert gewesen sein ...
Und wenn die kommenden Generationen noch verwöhnter sind??
Wieso beschleicht mich das Gefühl, dass Du die Fragezeichen hättest einsparen können?

So gesehen kann ich eigentlich nur noch mein Substandard-Script rechtzeitig wieder einstampfen (gut, dass ich immer die recyclebaren Bytes verwende ) ...

Grüße
bastla
[/immer noch OT]
Bitte warten ..
Mitglied: Smiley
26.01.2010 um 17:01 Uhr
@Biber, bastla

Zitat von bastla:
... aber sieh's mal so: vielleicht kann er ein anderes Mal noch so 20, 30 Adressen damit rausholen - dann muss es uns das
schon wert gewesen sein ...
>Und wenn die kommenden Generationen noch verwöhnter sind??
Wieso beschleicht mich das Gefühl, dass Du die Fragezeichen hättest einsparen können?

Hm, eure Kritik ist nicht ohne Sinn für den richtigen Moment und Verstand ... Trotz allem ist mein Anliegen eher der, zu lernen - scheint es auch noch so paradox, 105 Gameserver zur Verfügung zu haben und von "Lernen" zu sprechen.
Ich werde nie jeden dieser Server besuchen oder auch nur jeden Namen lesen. Du, bastla, hast mir mehr damit geholfen dieses Script zu verstehen, als damit, mir (Als Spielfigur), nun auf mehr als 60 Servern den Himmel auf den Kopf fallen zu lassen, wenn ich mal nicht aufpasse. (Es ist nicht immer Falsch, dies wortwörtlich zu verstehen.)

Bla, geschwurbel, bla ... Es wär nett wenn du mir hilfst das VBS Script zu verstehen, was aber nicht unbedingt notwendig ist, da ich VBS eig. nicht verwende.
Es funktioniert nicht, zeigt auch keine Fehlermeldung an, aber schreibt ips.txt neu, jedoch ohne Inhalt.

"T = fso.OpenTextFile(EinDatei).ReadAll " Ist das T nicht eine Variable; muss es deshalb nicht hinter "Set" stehen? Schreibe ich "Set" davor zeigt er mir einen Fehler. (Ojekt erforderlich Zeile 9 [da befindet sich das "T"] string .....)
Außerdem zeigt mir KEINEN Fehler an, wenn ich hier draus: "For Each Result In rE.Execute(T); Aus.WriteLine Trim(Result.Value)", das mache: "For Each Result In rE.Execute(T); Aus.WriteKSTAKGJHEKLKVine Trim(Result.Value)", was bedeutet, dass der "Executor", wenn man das so schreiben kann, nicht bis dahin kommt.
Was ist hier eigenltich der Befehl, der den Text nach "rE.Pattern" durchsucht? "rE.Pattern" wird ja nur deklariert und liegt gelangweil in der Mitte, oder nicht?

Mit freundlichen Grüßen
Bitte warten ..
Mitglied: bastla
26.01.2010 um 17:34 Uhr
Hallo Smiley!
Es funktioniert nicht, zeigt auch keine Fehlermeldung an, aber schreibt ips.txt neu, jedoch ohne Inhalt.
Kann eigentlich nur darauf zurückzuführen sein, dass keine Adressen gefunden werden, was wiederum als mögliche Ursachen einen unrichtigen RegEx oder unpassende Ausgangsdaten (zB weil in Unicode) haben könnte ...

Da Du lernen willst, vorweg zu Deinen Fragen:
"T = fso.OpenTextFile(EinDatei).ReadAll " Ist das T nicht eine Variable; muss es deshalb nicht hinter "Set" stehen?
T ist eine Stringvariable, keine Objektvariable - daher kein "Set" - und enthält den gesamten Dateiinhalt der "EinDatei".
Außerdem zeigt mir KEINEN Fehler an, wenn ich hier draus: "For Each Result In rE.Execute(T); Aus.WriteLine Trim(Result.Value)", das mache: "For Each Result In rE.Execute(T); Aus.WriteKSTAKGJHEKLKVine Trim(Result.Value)", was bedeutet, dass der "Executor", wenn man das so schreiben kann, nicht bis dahin kommt.
"Nicht bis dahin" ist nicht ganz richtig - wenn kein passender Text gefunden wird, läuft die (abweisende) Schleife nur einfach 0-mal ...
Was ist hier eigenltich der Befehl, der den Text nach "rE.Pattern" durchsucht?
Das Durchsuchen erfolgt mittels "rE.Execute(T)" - die Ergebnisse (wenn es denn welche gibt) werden dann mit der "For Each"-Schleife durchlaufen.
"rE.Pattern" wird ja nur deklariert und liegt gelangweil in der Mitte, oder nicht?
Nicht ; "Pattern" wird nicht deklariert, sondern erhält als Property des "RegExp"-Objektes eine Wertzuweisung (den Suchstring); verwendet wird dieser Wert dann beim "Execute".
Zum suboptimalen Ergebnis des Scripts:
Versuch es bitte einmal mit den folgenden beiden (von Dir oben als Beispiel geposteten) Zeilen als "ipliste.txt":
01.
0/32 (1) 87.106.84.31:27038 [Launch] deathrun_insane 2972 5460 182 202 612s 160km (99mi) , 89.94% 0 
02.
12/16 62.104.179.121:27015 [Launch] surf_ski_2 8029 14917 5 417 33m37s 176km (109mi) Hamburg, 04 95.03% 0
Mit der (eben noch mal runtergeladenen) geposteten Version des Scripts erhalte ich wunschgemäß folgende "ips.txt":
01.
87.106.84.31:27038 
02.
62.104.179.121:27015
Um Unicode als Fehlerursache ausschließen zu können, kannst Du einfach mit
type ipliste.txt iplisteASCII.txt
von der Kommandozeile eine ASCII-Version erzeugen und diese als "EinDatei" verwenden.

Zum RegEx
" \d+\.\d+\.\d+\.\d+\:\d+ "
Die Interpretation des Suchbegriffes sollte nicht allzu schwierig sein - aber zur Sicherheit aus der VBS-Onlinehilfe:
\ Markiert das folgende Zeichen als Sonder- oder wortgenaues (literales) Zeichen.
. Entspricht allen Einzelzeichen außer einem Zeilenumbruchzeichen. [Anm.: wird aber jeweils escaped]
+ Entspricht dem vorhergehenden Zeichen ein oder mehrere Male.
\d Entspricht einer Ziffer. Äquivalent zu [0-9].

Zu beachten wären ev die verwendeten Leerzeichen an Anfang und Ende (sollten, da der Batch an dieser Stelle getrennt hatte, aber nicht das Problem sein).

Grüße
bastla
Bitte warten ..
Mitglied: Smiley
26.01.2010 um 18:05 Uhr
Die Textdateien sind im Windows-Format (Gibts ja auch unter Unix, Mac.) als ANSI kodiert.
>Versuch es bitte einmal mit den folgenden beiden (von Dir oben als Beispiel geposteten) Zeilen als "ipliste.txt":
Ja, die gehen; weil dort Leerzeichen anstatt Tabulatoren verwendet sind.
Das " " ist im Forum falsch übernommen worden, nachdem ich das hier reinkopiert habe.
Also, nachdem ich die Leerzeichen im Pattern entfernt habe: "\d+\.\d+\.\d+\.\d+\:\d+", geht es einwandfrei.

Hmpf, Batch ist so einfach! VBS ist da nur ein gaaanz kleines stückchen schwieriger. Naja, wie mit "C" werde ich mich mit VBS wahrscheinlich aus Zeitgründen auch nicht weiter beschäftigen... genau wie mit JS, VB.Net, Pascal ...

Mit VBS ist eig. in diesem Sinn auch komplizierter: hier werden Variabeln nicht explizit vorher als eine bestimmte Klasse definiert, wie "dim x as integer" in VB.Net oder "int x=3;" in C. Hier kann eine Variable einfach irgendwo stehen, und weil nichts davor steht, wundert man sich manchmal, ob man da nicht einen Fehler gemacht hat und "Set" hätte vor schreiben sollen - vermute ich mal.

Trotzdem danke. Dieses Forum - und speziell diesen Thread - wird ja noch länger geben und während dessen womöglich Leuten helfen, die ähnliche Probleme mit Batch oder VBS lösen wollen, wie du schon sagtest.

Mit freundlichen Grüßen
Bitte warten ..
Mitglied: bastla
26.01.2010 um 18:39 Uhr
Hallo Smiley!

An TAB hatte ich nun tatsächlich (noch) nicht gedacht ...
Mit VBS ist eig. in diesem Sinn auch komplizierter
Dazu wäre vielleicht anzumerken, dass auch VBS relativ "sauber" geschrieben werden könnte (inkl "Option Explicit" und Deklarationen; letztere allerdings ohne Typ, da generell "Variant" verwendet wird ) - meine Scripts sind allerdings meist etwas "kompakt" gehalten.

Ob die Nachwelt tatsächlich von diesem Thread profitieren wird, lasse ich mal dahingestellt - anyhow, wenn's Dir (wie auch immer) geholfen hat, ist's ja auch schön ...

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Microsoft Office
gelöst Dropdownlisten in Abhängigkeit mit Leerzeichen im Namen (Datenüberprüfung) (2)

Frage von kevische zum Thema Microsoft Office ...

Administrator.de Feedback
Bug? "m f g" (ohne Leerzeichen) wird auch in URL ersetzt (4)

Frage von emeriks zum Thema Administrator.de Feedback ...

Batch & Shell
gelöst Findstr - code für schwieriger Abfrage gesucht (9)

Frage von reissaus73 zum Thema Batch & Shell ...

Batch & Shell
gelöst Echo in Batch schreibt vorab eine 1 (1)

Frage von chappy72 zum Thema Batch & Shell ...

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