netlord
Goto Top

Zwei fragen zu findstr

Hallo Administratoren ;)

ich habe zwei Fragen zu findstr

1.)
wir haben Rechner mit unterschiedlicher Anzahl von Raid-Controllern. Diese soll/muss ich Zählen und dann weiter verarbeiten. Daher brauche ich nur die Anzahl als Ziffer.

Dazu gibts die storcli.exe
Eine typische Ausgabe sieht so aus:
//**storcli show ctrlcount**//
**status code = 0**
**status = success**
**description = none**

**controller count = 1**
also habe ich folgendes versucht
//**storcli show ctrlcount | findstr /b controller | findstr /e /r [0-9]**//
Das Egebniss ist jedoch controller count = 1 und nicht nur die 1

Was mache ich falsch?

2.)
Ich muss ein Laufwerk auf dem DHCP-Server verbinden.
Was ist die einfachste Möglichkeit die IP des DHCP-Servers zu finden?

Im Prinzip schwebt mir da ne sehr ähnliche Lösung vor - die betreffende Zeile finden und dann die letzten X Werte einlesen, aber.....

Danke und Gruß
netlord

Content-ID: 251872

Url: https://administrator.de/forum/zwei-fragen-zu-findstr-251872.html

Ausgedruckt am: 23.12.2024 um 07:12 Uhr

Nick.B
Nick.B 14.10.2014 um 12:56:56 Uhr
Goto Top
Du musst doch einfach nur den ersten Befehl "findstr /b controller" weg lassen oder verstehe ich dich jetzt falsch ??
netlord
netlord 14.10.2014 um 13:00:05 Uhr
Goto Top
Hallo Nick

das geht nicht - dann findet er alle Zeilen die eine Ziffer als letzten Eintrag haben.
ITvortex
ITvortex 14.10.2014 aktualisiert um 13:43:41 Uhr
Goto Top
Hallo netlord,

 (storcli show ctrlcount | findstr /b controller).Split("="" ") | findstr /E [0-9]  

Liebe Grüße
ITvortex
Nick.B
Nick.B 14.10.2014 um 13:46:19 Uhr
Goto Top
Dann versuch es mal mit dem Befehl "/Find"

/V Zeigt alle Zeilen an, die die Zeichenfolge NICHT enthalten.
/C Zeigt nur die Anzahl der die Zeichenfolge enthaltenden Zeilen an.
/N Zeigt die Zeilen mit ihren Zeilennummern an.
/I Ignoriert Groß-/Kleinschreibung bei der Suche.

Ich glaube "Find /C" oder "Find /N" sollte das richtige für dich sein.

MfG Nick
ITvortex
ITvortex 14.10.2014 aktualisiert um 13:49:02 Uhr
Goto Top
Die Frage war zu "findstr" oder irre ich mich?

PS: Weshalb sollte das dass richtige für ihn sein?
ITvortex
Lösung ITvortex 14.10.2014, aktualisiert am 22.10.2014 um 14:11:13 Uhr
Goto Top
Zu deinem zweiten Punkt:

 (ipconfig /all | findstr "   DHCP").Split(":"" ") | findstr [0-9]   

Also wenn du es mit findstr machen willst....
bastla
Lösung bastla 14.10.2014, aktualisiert am 22.10.2014 um 14:11:05 Uhr
Goto Top
Hallo netlord!

findstr arbeitet zeilenorientiert und liefert daher immer die gesamte Zeile als Ergebnis. Für die Zerlegung kannst Du eine for-Schleife verwenden - ungetestet etwa:
for /f "tokens=2 delims==" %%i in ('storcli show ctrlcount ^| findstr /b "controller"') do set /a Anzahl=%%i  
echo %Anzahl%
Analog dazu:
for /f "tokens=2 delims=:" %%i in ('ipconfig /all^|findstr "DHCP-Server"') do set "DCHP=%%i"  
echo %DHCP%
Das Leerzeichen am Beginn der Variablen %DHCP% kannst Du mit zB
set "DHCP=%DHCP: =%"
(= "ersetze alle Leerzeichen in %DHCP% durch Nichts") auch noch los werden ...

Grüße
bastla
netlord
netlord 22.10.2014 aktualisiert um 14:18:38 Uhr
Goto Top
Hallo

erst mal danke für die Antworten - im Moment war aber was anderes wichtiger.....

Zitat von @ITvortex:

Also wenn du es mit findstr machen willst....

Nein, ich will das nicht zwingend mit findstr machen. Imho kann ich mit find jedoch nicht machen, deswegen habe ich es mit findstr versucht.
However - ich bin so pragmatisch dass ich durchaus das nehme was mir am schnellsten und einfachsten weiterhilft.

Daher bin ich in der Zwischenzeit bei grep gelandet.
Das Prinzipielle Problem ist ja - ich suche eine Zeile die ich am beginn der Zeile erkenne und brauche dann die letzten n stellen.
Mit grep geht das so:

letztes zeichen 1 ziffer
| grep ^beginn | grep -o '.$'

letzte zeichen mehrere ziffern
| grep ^beginn | grep -ioe '[0-9]*$'

letzte zeichen mehrere buchstaben
| grep ^beginn | grep -ioe '[a-z]*$'

ip-adresse
grep -eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'

Ich bin und bleibe nun bei grep da ich es auch noch an einer anderen Stelle brauche - bastla mag sich noch daran erinnern (Uninstallierte Geräte im Gerätemanager per Batch finden)
Dieses Script aus diesem Thread macht grep mit einem einzeiler (!).

Trotzdem danke an alle!

Gruß
netlord