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-Key: 251872

Url: https://administrator.de/contentid/251872

Printed on: April 20, 2024 at 04:04 o'clock

Member: Nick.B
Nick.B Oct 14, 2014 at 10:56:56 (UTC)
Goto Top
Du musst doch einfach nur den ersten Befehl "findstr /b controller" weg lassen oder verstehe ich dich jetzt falsch ??
Member: netlord
netlord Oct 14, 2014 at 11:00:05 (UTC)
Goto Top
Hallo Nick

das geht nicht - dann findet er alle Zeilen die eine Ziffer als letzten Eintrag haben.
Member: ITvortex
ITvortex Oct 14, 2014 updated at 11:43:41 (UTC)
Goto Top
Hallo netlord,

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

Liebe Grüße
ITvortex
Member: Nick.B
Nick.B Oct 14, 2014 at 11:46:19 (UTC)
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
Member: ITvortex
ITvortex Oct 14, 2014 updated at 11:49:02 (UTC)
Goto Top
Die Frage war zu "findstr" oder irre ich mich?

PS: Weshalb sollte das dass richtige für ihn sein?
Member: ITvortex
Solution ITvortex Oct 14, 2014, updated at Oct 22, 2014 at 12:11:13 (UTC)
Goto Top
Zu deinem zweiten Punkt:

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

Also wenn du es mit findstr machen willst....
Member: bastla
Solution bastla Oct 14, 2014, updated at Oct 22, 2014 at 12:11:05 (UTC)
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
Member: netlord
netlord Oct 22, 2014 updated at 12:18:38 (UTC)
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