Wie passend-IP-Adresse mit 'findstr'? Oder eine andere Methode der batch in windows
Wie der Titel sagt, möchte ich match ip-Adresse mit der batch in windows, bitte sagen Sie mir, wie ich es tun kann?
ich sehe, dass "findstr" Abgleich mit regex wie "[0-9]", aber wie kann "findstr" entspricht, es erscheint ein-bis dreimal?
Was ist die Quelle?
Gute Frage. Ich denke, es ist nicht möglich, mit
STATUS_ACCESS_DENIED: (a)
Es gibt mindestens einen Unterschied zwischen FINDSTR auf XP vs neueren Windows: XP hat die max-Suche die string-Länge von 127 Byte, in der Erwägung, dass neuere Versionen unterstützen bis zu 511 bytes. Ich weiß nicht, ob Vista FINDSTR würde unter XP funktioniert, oder Umgekehrt.
dbenham, das ist mir neu (und danke für den link zu deiner Frage/Antwort – derzeit lese). Noch gibt es diese Einschränkung wohl nicht hier bewerben.
Gute Frage. Ich denke, es ist nicht möglich, mit
findstr
. Möchten Sie vielleicht hinzufügen, welche version von cmd.exe
Sie verwenden. Diese tools wurden aktualisiert, deutlich als "zu spät".STATUS_ACCESS_DENIED: (a)
findstr
ist völlig unabhängig von der cmd
version, es ist ein separates Programm, nachdem alle. (b) cmd
wurde nicht aktualisiert, da Windows 2000, soweit ich weiß.Es gibt mindestens einen Unterschied zwischen FINDSTR auf XP vs neueren Windows: XP hat die max-Suche die string-Länge von 127 Byte, in der Erwägung, dass neuere Versionen unterstützen bis zu 511 bytes. Ich weiß nicht, ob Vista FINDSTR würde unter XP funktioniert, oder Umgekehrt.
dbenham, das ist mir neu (und danke für den link zu deiner Frage/Antwort – derzeit lese). Noch gibt es diese Einschränkung wohl nicht hier bewerben.
InformationsquelleAutor mts | 2012-04-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Seit
findstr
's regex-Unterstützung ist ein bisschen ... veraltet, Sie in der Regel nicht verwenden können, die meisten regexes, die Sie im web finden. Die folgenden Spiele vier Läufe von Ziffern, die durch Punkte getrennt sind:Jedoch, wenn Sie nur daran interessiert sind, in der Adressen und nicht die Subnetz-Masken, die Sie möglicherweise verwenden möchten
Und ja, wenn würde auch passen, Dinge wie
Address: 232345.534.78678.345
die offensichtlich keine IP-Adresse. Aber in der Regelipconfig
nicht ausspucken solcher Zeichenfolgen.In beiden Beispielen ist die Suche nach pattern [0-9] ist nicht nötig, die werden (verwirrend) verdoppelt, ohne Einfluss auf die Funktion.
es ist notwendig, um zu vermeiden, ein passender string wie
...
.wowww, du bist völlig Recht, habe ich nicht erkennen
"*" matches NONE too
dachte es wäre wenigstens EIN - nicht wahr - also bin ich Essen mit meinen eigenen Worten und absolut darauf bestehen, das Gegenteil. danke für die Erklärung.Weil "?" funktioniert nicht, MAN würde schreiben Müssen, ein kleines Stück code
using "for" loops to verify at least 1 number and at max 3 are found for each part between at least 4 and max 4 groups divided by "." and inside the loops one could verify the first Group between "None" and "2", the second and third between "1" and "5"
! Wirklich niemand getan, indem jetzt?InformationsquelleAutor Joey
FINDSTR ist die einzige native batch-Dienstprogramm, das eine Unterstützung für reguläre Ausdrücke. Aber der support ist sehr begrenzt-und nicht-standard. Den nur wiederholen, Ausdruck unterstützt, ist
*
. Darüber hinaus ist es begrenzt auf ein maximum von 15 Zeichen Klasse Bedingungen (siehe Was sind die undokumentierten Funktionen und die Einschränkungen der Windows-Befehl "FINDSTR"?). Also ich glaube nicht, dass es möglich ist, die Entwicklung einer nativen batch-regex, die genau mit einer IP-Adresse.Könnten Sie bleiben innerhalb des nativen windows-Dienstprogramm und verwenden Sie Power-Shell, oder verwenden Sie JScript-oder VBScript-über das CSCRIPT-Befehl. Alle drei haben viel bessere regex-Unterstützung.
Alternativ könnten Sie zum download einer beliebigen Anzahl von Windows-ports von Unix-Werkzeugen, von denen viele kostenlos sind. GnuWin32 ist eine gute Ressource (beinhaltet grep): http://gnuwin32.sourceforge.net/
InformationsquelleAutor dbenham
Eine simple regex-string wäre
(1?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])\.(1?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])\.(1?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])\.(1?[0-9]?[0-9]|2[0-4][0-9])|25[0-5]
entspricht genau den Bereich der zulässigen IP-Adressen.
EDIT: Basierend auf Kommentare unten und Reguläre Ausdrücke in findstr Informationen, ändern die oben genannten regex zu
[0-2][0-9][0-9]\.[0-2][0-9][0-9]\.[0-2][0-9][0-9]\.[0-2][0-9][0-9]
zu entsprechen IP-Adressen. OffenbarFINDSTR
ist wirklich so beschränkt in die reguläre-Ausdruck-interpretation.Danke. Ich bin damit einverstanden, dass FINDSTR ist wirklich beschränkt in die reguläre-Ausdruck-interpretation. Und ich denke,"[0-2][0-9][0-9]" kann nur Spiele von "000" bis "299", und es kann nicht passen, wie "10.10.10.10".
netter Gedanke, aber es findet keine IP ' s NICHT mit 3 zahlen wie
1.2.3.4
InformationsquelleAutor saluce
Im Falle der Eingabe der Befehl "findstr" sollte nicht das Ergebnis von ipconfig,
könnten Sie die folgende Zeile von code für eine ip-Adresse in eine text-oder csv-Datei.
Es fügt Metazeichen, um die Antwort des Benutzers Joey. "\"<" am Anfang und
">" am Ende. Auch wenn eine solche Zeichenfolge könnte nicht sehr Häufig (oder sehr unwahrscheinlich
auftreten) auf diese Weise wird sichergestellt, dass kein string in eine ip-Adresse-ähnliches format, aber mit einem
alphabetische Zeichen am Ende und/oder Anfang (z.B. A198.252.206.16 oder 198.252.206.16 A) wird zurückgegeben.
InformationsquelleAutor FabMay