Top-Themen

Aktuelle Themen (A bis Z)

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 Mit Findstr Hostname aus IPconfig suchen und als Variable zur Verzeichniserstellung nutzen

Mitglied: Lox0805

Lox0805 (Level 1) - Jetzt verbinden

29.07.2011 um 11:04 Uhr, 4413 Aufrufe, 15 Kommentare

Hallo.

Ich habe eine Frage zu folgender DOS-Batch-Zeile:

01.
  
02.
ipconfig /all |findstr "Hostname"


Ergebnis:
Hostname . . . . . . . . . . . . : Lap40-PC-Win7

Wie muss ich den Code verändern, um NUR den tatsächlichen Hostnamen zu erhalten? Also, wie schneide ich den Rest vor dem "L" (in diesem Fall) ab?
Ich brauche nur "Lap40-PC-Win7" (kann natürlich auch anders lauten).

Anschließend möchte ich diesen Wert als Varaible nutzen, um z.B. ein Unterverzeichnis anlegen zu können.

Geht das überhaupt? Bin da nicht so firm.


Sekunderes Problem:
Um es auf die Spitze zu treiben, würde ich die Zeile evtl. auch gerne auf die IP des PCs anwenden.
Allerdings habe ich verschiedene alte und neue Systeme (W95-W7), und ich kann nur nach dem Begriff "IP" filtern.
Dann kommen bei den neueren PCs alle Adaptereinstellungen. Ich brauche aber nur die des Lan-Adapters.
Aber das ist nicht wichtig.


Ich habe mich im Forum ein wenig umgeschaut, weiss aber nicht so recht, wonach ich suchen soll.

Vielleicht kann mir jemand helfen.

Danke.

mfg
Mitglied: bastla
29.07.2011 um 11:12 Uhr
Hallo Lox0805!

Etwa so:
for /f "tokens=15" %%i in ('ipconfig /all ^|findstr "Hostname"') do set "Host=%%i"
Anlegen des Verzeichnisses:
01.
if defined Host ( 
02.
    md "D:\Verzeichnis in welches das Unterverzeichnis soll\%Host%" 
03.
) else ( 
04.
    echo Hostname nicht gefunden 
05.
)
Mit "if defined" wird vorweg kontrolliert, ob auch tatsächlich eine Variable %Host% existiert.

Grüße
bastla
Bitte warten ..
Mitglied: holli.zimmi
29.07.2011 um 11:22 Uhr
Hi Lox0805,

und warum nimmst Du nicht direkt den Befehl "hostname"?

Gruss

Holli
Bitte warten ..
Mitglied: Xaero1982
29.07.2011 um 11:23 Uhr
Hi,

ehm für den ersten Part frag ich mich warum du nicht einfach: %computername% oder hostname verwendest?

VG
Bitte warten ..
Mitglied: bastla
29.07.2011 um 11:37 Uhr
@Xaero1982
warum du nicht einfach: %computername% oder hostname verwendest?
Wo bleibt denn da der Spaß?
Aber ok:
for /f "delims=" %%i in ('hostname') do set "Host=%%i"
Um die (erste) IP-Adresse der (ersten) "LAN-Verbindung" zu finden könnte das so gehen:
01.
@echo off & setlocal 
02.
set "Adapter=LAN-Verbindung" 
03.
 
04.
set "IP=" & set "GetIt=" 
05.
for /f "delims=" %%i in ('ipconfig /all') do call :ProcessLine "%%i" 
06.
if defined IP echo IP: %IP% 
07.
goto :eof 
08.
 
09.
:ProcessLine 
10.
echo %1|findstr "%Adapter%">nul && ( 
11.
    set "GetIt=True" 
12.
    goto :eof 
13.
14.
if not defined GetIt goto :eof 
15.
echo %1|findstr "IP-Adr">nul && for /f "tokens=14" %%i in (%1) do if not defined IP set "IP=%%i" 
16.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: Lox0805
29.07.2011 um 12:09 Uhr
Hallo.

a) Bis dato kannte ich den Befehl nicht. Danke.

b) Unter Win95 gibt es den Befehl nicht.

c) Leider hab ich grad festgestellt, das es ipconfig unter Win95 auch nicht gibt..... *arghh* MIST

Trotzdem Danke für den Hinweis.
Bitte warten ..
Mitglied: Lox0805
29.07.2011 um 12:54 Uhr
Hallo.

Danke für die Antwort.

Das mit dem Hostnamen klappt mit beiden Varianten. Auf meinem PC.
Den Befehl hostname gibt es erst seit WinXP? (Win2000 kann ich im Moment nicht testen).

Leider hab ich den Befehl ipconfig unter Win95 nicht zur Verfügung. Da hieß das noch "winipcfg" und ist ein grafisches Programm. Leider grad erst festgestellt.

Stattdessen könnte ich, wenn nur ein Adapter (aber unter Win95 geh ich mal davon aus, dass es nicht mehr gibt )
mit "route print" arbeiten und dann nach der Netzmaske 255.255.255.255 suchen?!? Oder mit arp-a . Ist das lange her...
Hier gibt es aber auch den Befehl Findstr nicht.
Wenn er den Hostnamen bzw. den Befehl ipconfig nicht findet, weiß ich ja, das es ein Win95 ist. Ab W98 vorhanden.


Den anderen Code habe ich komplett übernommen und in eine Batch gepackt und diese über DOS aufgerufen.
Der Code arbeitet zwar, aber ich bekomme nur eine leere Zeile raus.
Es wird keine IP angezeigt.



Vielen Dank.
Bitte warten ..
Mitglied: Nagus
29.07.2011 um 13:06 Uhr
Hi,
ähm "hostname" ist nur eine Umgebungsvariable kein Befehl! Die könntest Du auch auf den Win95 Kisten definieren - aber mal ehrlich: Win95????! Puh ....

Gruß
Nagus
Bitte warten ..
Mitglied: Lox0805
29.07.2011 um 13:11 Uhr
Hallo.

Mach mich nicht wirsch
Auf meiner Win7 Kiste gibt es den Befehl hostname.exe im system32 Verz.
Xaero hat den Durchblick.

Für die W95 kann ich doch auch nix. Die laufen und laufen und laufen und laufen seit 1998 ohne Mucken.
Ich kann es nicht ändern. Wenn dann nur mit Gewalt.

Schönes WE
Bitte warten ..
Mitglied: Nagus
29.07.2011 um 13:45 Uhr
Stimmt! Aber computername ist richtig! Der sollte aber gehen...

echo %computername% sollte funktionieren ...

Du kannst Dir die ganzen Variablen anzeigen lassen in dem du am Prompt set eingibst. Da sollte dann auch der Computername erscheinen ...
Hostname habe ich noch nie benutzt - wusste gar nicht das es existiert! Me culpa ...
Bitte warten ..
Mitglied: bastla
29.07.2011 um 17:15 Uhr
Hallo Lox0805!
Der Code arbeitet zwar, aber ich bekomme nur eine leere Zeile raus.
Zur Fehlersuche: Wenn Du aus "echo off" ein "echo on" machst, wird jeder Befehl vor der Ausführung angezeigt.

Du kannst auch die "tokens" (jedes Leerzeichen gilt als Trennzeichen) nachzählen (oder einfach die Zahl 14 variieren), um ev die Auswertung des "ipconfig /all" anzupassen - zum Testen direkt an der Kommandozeile
for /f "tokens=14" %i in ('ipconfig /all ^|findstr "IP-Adr"') do @echo %i
eingeben (unter XP SP3 passt's bei mir mit 14) ...

Grüße
bastla
Bitte warten ..
Mitglied: holli.zimmi
30.07.2011 um 13:17 Uhr
Zitat von Lox0805:
Hallo.

a) Bis dato kannte ich den Befehl nicht. Danke.

b) Unter Win95 gibt es den Befehl nicht.

c) Leider hab ich grad festgestellt, das es ipconfig unter Win95 auch nicht gibt..... *arghh* MIST

Trotzdem Danke für den Hinweis.

Hi Lox0805

unter win95,98, ME heist, glaub ich, der Befehl winipcfg.exe, ist aber grafisch.

Gruss

holli
Bitte warten ..
Mitglied: Xaero1982
30.07.2011 um 13:57 Uhr
Zitat von holli.zimmi:
> Zitat von Lox0805:
> ----
> Hallo.
>
> a) Bis dato kannte ich den Befehl nicht. Danke.
>
> b) Unter Win95 gibt es den Befehl nicht.
>
> c) Leider hab ich grad festgestellt, das es ipconfig unter Win95 auch nicht gibt..... *arghh* MIST
>
> Trotzdem Danke für den Hinweis.

Hi Lox0805

unter win95,98, ME heist, glaub ich, der Befehl winipcfg.exe, ist aber grafisch.

Gruss

holli
Mhh ...
> Zitat von Lox0805:
> ----
>Leider hab ich den Befehl ipconfig unter Win95 nicht zur Verfügung. Da hieß das noch "winipcfg" und ist ein grafisches Programm. Leider grad erst festgestellt.
>

VG
Bitte warten ..
Mitglied: Lox0805
01.08.2011 um 13:06 Uhr
Guten Tag.

Ja, unter XP funktioniert es wunderbar so wie es ist !!!

Unter Win7 siehts so aus:
01.
@echo off & setlocal 
02.
cls 
03.
 
04.
set "Adapter=LAN-Verbindung" 
05.
set "IP=" & set "GetIt=" 
06.
for /f "delims=" %%i in ('ipconfig /all') do call :ProcessLine "%%i" 
07.
if defined IP echo IP: %IP% 
08.
goto :eof 
09.
 
10.
:ProcessLine 
11.
echo %1|findstr "%Adapter%">nul && ( 
12.
    set "GetIt=True" 
13.
    goto :eof 
14.
15.
if not defined GetIt goto :eof 
16.
echo %1|findstr "IPv">nul && for /f "tokens=13" %%i in (%1) do if not defined IP set "IP=%%i" 
17.
 
18.
goto :eof

Vielen DANK !!!


Da ich ipconfig und findstr allerdings nicht unter Win95 habe muss ich wohl das komplette Ergebnis des Befehls arp -a benutzen.
Für meine Auswertung ist das ok...

Allerdings, nur interesse halber, warum kann ich nicht einfach die Variablen und den Befehl in der Batch tauschen???
Ich bekomme hier kein Ergebnis.

01.
for /f "tokens=2" %i in ('arp -a ^|findstr "Schnitt"') do @echo %i
Funktioniert in der Dos Box.

01.
@echo on & setlocal 
02.
cls 
03.
set "Adapter=Schnittstelle" 
04.
 
05.
set "IP=" & set "GetIt=" 
06.
for /f "delims=" %%i in ('arp -a') do call :ProcessLine "%%i" 
07.
if defined IP echo IP: %IP% 
08.
goto :eof 
09.
 
10.
:ProcessLine 
11.
echo %1|findstr "%Adapter%">nul && ( 
12.
    set "GetIt=True" 
13.
    goto :eof 
14.
15.
if not defined GetIt goto :eof 
16.
echo %1|findstr "Schnitt">nul && for /f "tokens=2" %%i in (%1) do if not defined IP set "IP=%%i" 
17.
 
18.
goto :eof
Funktioniert nicht.

Ich verstehe anscheinend die Batch immer noch nicht ganz.

Danke.

mfg
Lo0805
Bitte warten ..
Mitglied: bastla
01.08.2011 um 16:00 Uhr
Hallo Lox0805!

Da die Ausgabe von "arp -a" anders aufgebaut ist als jene eines "ipconfig", muss natürlich auch der Batch angepasst werden - eigentlich genügt dafür dann schon:
01.
@echo off & setlocal 
02.
cls 
03.
set "Adapter=Schnittstelle" 
04.
 
05.
set "IP=" 
06.
for /f "tokens=2" %%i in ('arp -a^|findstr "%Adapter%"') do set "IP=%%i" 
07.
if defined IP echo IP: %IP%
Zum Batch oben:
Damit bei mehreren Netzwerkkarten die IP der (ersten) "LAN-Verbindung" verwendet wird, muss die Ausgabe zeilenweise gelesen werden und erst, wenn die Zeile zB "Ethernetadapter LAN-Verbindung:" gefunden wurde, wird die Schalter-Variable "%GetIt%" gesetzt. Nur bei gesetzter Variable erfolgt dann die Auswertung, und nur, wenn noch keine Variable "%IP%" gefunden wurde ("if not defined IP") - damit ist sicher gestellt, dass der (erste) Wert der ersten "LAN-Verbindung" verwendet wird (anderenfalls würde dieser Wert durch nachfolgende Werte, etwa einer zweiten "LAN-Verbindung", überschrieben).

Grüße
bastla
Bitte warten ..
Mitglied: Lox0805
01.08.2011 um 17:13 Uhr
Hallo Bastla.

Super !!!

Danke für die Erklärung.
Und Danke für den zweiten Script.
Mit dem arp läuft wesentlich schneller durch.

Ich hatte es mir einfacher vorgestellt.

Danke.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

In Batch FINDSTR in Variable und auch noch kuerzen

gelöst Frage von deathwormBatch & Shell2 Kommentare

Hallo! Ich habe folgendes Problem. Beim verschluesseln von Festplatten wird ein Key generiert und dieser in eine TXT Datei ...

Batch & Shell

Per Findstr, Suchen nach dies bzw. jenes, sonst sonstiges

gelöst Frage von batchnewbieBatch & Shell5 Kommentare

Hallo, ich stehe irgendwie auf dem Schlauch und benötige eure Hilfe. Ich habe drei unterschiedliche Dateiname-Muster einmal welche mit ...

Batch & Shell

Zeit als Variable für Entscheidungen nutzen

gelöst Frage von DaTobsnBatch & Shell2 Kommentare

Hi! Und zwar will ich eine Batch-Datei erstellen, die, wenn ich sie starte, mich begrüßt. Dies soll aber Zeitabhängig ...

Batch & Shell

Laufwerksbezeichnung (label) in Batch als Variable nutzen

gelöst Frage von tobias.mockBatch & Shell21 Kommentare

Hallo zusammen, ich bin sicher, dass meine Frage für alle Experten hier viel zu simpel ist, ich bin aber ...

Neue Wissensbeiträge
Windows 10
Windows 10 Oktober 2018 Update: Es ist wieder da
Tipp von Bowsette vor 7 StundenWindows 10

Ein neuer Versuch von Microsoft das Windows 10 Oktober 2018 Update, auch bekannt als 1809, an den Mann zu ...

Windows Server

Windows Server 2016: Achtung - ab heute gibt es wieder Express Updates

Information von kgborn vor 17 StundenWindows Server1 Kommentar

Kurze Info für Administratoren, die Windows Server 2016 per WSUS/SCCM mit Updates betanken. Ab heute gibt es für Windows ...

Windows Netzwerk
Windows Admin Center - Sagt was ihr braucht!
Tipp von Juanito vor 2 TagenWindows Netzwerk18 Kommentare

Hallo zusammen, der ein- oder andere hat sicherlich schon vom Windows Admin Center gehört. - Microsoft's neue Adminkonsole welche ...

Verschlüsselung & Zertifikate

Bitlocker-Verschlüsselung und -Monitoring ohne MBAM

Tipp von DerWoWusste vor 2 TagenVerschlüsselung & Zertifikate

Der Folgende Tipp beschreibt, wie man ohne MBAM die Verschlüsselung erzwingt und monitort. MBAM ist ein Enterprise-Benefit und somit ...

Heiß diskutierte Inhalte
Entwicklung
Meine Nachbarn sehen meinen Internet Trafic
gelöst Frage von beatnguEntwicklung51 Kommentare

Hallo Also ich wohne in einem Mehrparteien Haus mit 24 wohnungen. Meine nachbaren im letzten stock fummeln immer an ...

Microsoft Office
Lizenzierung
Frage von opc123Microsoft Office29 Kommentare

Hallo, eventuell ein oft bekanntes Thema. Office 365 ist mir zu teuer, da wir als Bildungsträger andere Konditionen beim ...

Windows 10
Windows 10 mit CRITICAL PROCESS DIED
Frage von liquidbaseWindows 1028 Kommentare

Das aktuelle Problem was ich habe steht bereits im Threadtitel. Etwas mehr zum Hintergrund soll nun folgen. Problemkind ist ...

Voice over IP
Andere Rufnummer bei abgehenden Gesprächen vom All-IP-Anschluß der Telekom anzeigen
Frage von vafk18Voice over IP19 Kommentare

Ich möchte bei abgehenden Gesprächen vom All-IP-Anschluß der Telekom meine Handynummer hinterlegen, damit ich Rückrufe jederzeit empfangen kann. Derzeit ...