goodbytes
Goto Top

String herausfiltern

Hallo,
ich möchte gerne bei vielen Maschinen per Loginscript den FQDN ermitteln.
Dafür wollte ich ihn aus der Rückgabe von: ping -a 127.0.0.1 herauslösen und in eine Variable schreiben. Er steht ja immer an der selben Stelle.

Beispiel für die Rückgabe:
C:\> ping -a -n 1 127.0.0.1

Ping wird ausgeführt für PC001.DOMAIN.local [127.0.0.1] mit 32 Bytes Daten:
Antwort von 127.0.0.1: Bytes=32 Zeit<1ms TTL=128

Also brauche ich alles von der ersten Zeile der Rückgabe ab dem 4. Leerzeichen bis zum nächsten Leerzeichen.

Gruß
Torsten

Content-ID: 246376

Url: https://administrator.de/forum/string-herausfiltern-246376.html

Ausgedruckt am: 14.04.2025 um 02:04 Uhr

colinardo
colinardo 13.08.2014 aktualisiert um 13:22:55 Uhr
Goto Top
Hallo Torsten,
wie wärs stattdessen simpler mit:
echo %COMPUTERNAME%.%USERDNSDOMAIN%
Grüße Uwe
LordXearo
LordXearo 13.08.2014 aktualisiert um 13:22:52 Uhr
Goto Top
Hallo,

echo %COMPUTERNAME%.%USERDNSDOMAIN%

Gruß

Xearo

Edit: zu langsam =(
goodbytes
goodbytes 13.08.2014 um 14:57:15 Uhr
Goto Top
Ja, das funktioniert solange der User an der Domain angemeldet ist. Wenn die Maschine zwar in der Domain ist, aber ein lokaler User sich angemeldet hat ist diese Variable leer (unter Win7). Unter WinXP geht es gar nicht, Daher wollte ich es eindeutig für die Maschine mittels ping -a ermitteln.

Gruß
Torsten
colinardo
Lösung colinardo 13.08.2014, aktualisiert am 14.08.2014 um 09:14:53 Uhr
Goto Top
Über das auslesen des Ping geht es so (habe mit skip gearbeitet, da mit findstr unterschiedliche Sprachen der Systeme beachtet werden müssten):
for /f "skip=1 tokens=5 delims= " %%a in ('ping -n 1 127.0.0.1') DO @(  
 set "FQDN=%%a"  
 goto next
)
:next
echo %FQDN%
ich würde es aber zuverlässiger über wmi machen:
for /f "skip=1 tokens=1,2" %%a in ('wmic Computersystem get DNSHostname^,Domain') DO @(  
  set "FQDN=%%a.%%b"  
  goto next
)
:next
echo %FQDN%
Grüße Uwe
Biber
Lösung Biber 13.08.2014, aktualisiert am 14.08.2014 um 09:14:54 Uhr
Goto Top
...oder, als Ergänzung zu colinardos Lösungen, dasselbe mit "if defined" statt "goto next".

Dann lässt es sich auch am CMD-Prompt verproben in einem Einzeiler.

Am Beispiel der Ermittlung des Strings über WMIC am CMD-Prompt:

for /f "skip=1 tokens=1,2" %a in ('wmic Computersystem get DNSHostname^,Domain') DO @(If not defined FQDN (set "FQDN=%a.%b" & set FQDN))  
--> bei Ausführung am CMD-Prompt wird die Variable FQDN gesetzt und zur Kontrolle angezeigt.

Als Batch dann so (Variable FQDN bei der "if defined"-Strategie aber vorher löschen, sonst wird sie nie neu gesetzt)
...
SET FQDN=
for /f "skip=1 tokens=1,2" %%a in ('wmic Computersystem get DNSHostname^,Domain') DO @(  
  If not defined FQDN set "FQDN=%%a.%%b"   
  )
echo FQDN: %FQDN%

Grüße
Biber