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

Registry durchsuchen, Pfad kopieren, in Variable setzen

Frage Entwicklung Batch & Shell

Mitglied: 70065

70065 (Level 1)

25.09.2008, aktualisiert 26.09.2008, 7697 Aufrufe, 11 Kommentare

Hallo!

Folgendes:

Ich möchte erstens mittels .bat die Registry durchsuchen.
Im Pfad "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network" soll nach Zeichenfolge "Lan-Verbindung" gesucht werden.

Entwerder soll gleich in dem gefunden Verzeiches ein neuer D-WORD Wert erstellt werden...

oder

der Pfad in dem "Lan-Verbindung" gefunden wurde soll gelesen werden und die ID davor soll als Variable definiert werden.
In meinem Fall:
"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\{E73A4B95-9D35-47FE-B351-C1C6DA675F37}\Connection"

Als Variable definieren: "{4D36E972-E325-11CE-BFC1-08002BE10318}\{E73A4B95-9D35-47FE-B351-C1C6DA675F37}"

Ich hoffe jemand kann mir helfen...

Danke!!!

Gruß!
Mitglied: bastla
25.09.2008 um 17:30 Uhr
Hallo Shark16761!

Versuch's mal so:
01.
@echo off & setlocal 
02.
set ID= 
03.
set "Key=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\" 
04.
for /f %%i in ('reg query "%Key%" /s^|findstr "{" 2^>nul') do set "Key2=%%i" 
05.
for /f "tokens=6-7 delims=\" %%i in ('reg query "%Key2%" /s^|findstr "}\\{" 2^>nul') do set "ID=%%i\%%j" 
06.
if defined ID ( 
07.
    echo %ID% 
08.
) else ( 
09.
    echo Nicht gefunden ... 
10.
)
Grüße
bastla

[Edit] Suchbegriff im zweiten "findstr" auf "}\\{" geändert [/Edit]
Bitte warten ..
Mitglied: Biber
25.09.2008 um 17:41 Uhr
....wieder zu langsam...

Meine zwei Test-Zeilen vom CMD-Prompt sahen so aus:
01.
>set "regkey=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network" 
02.
>for /f %i in ('reg query "%regkey%" /s ^|find "}\Connection"') do @for /f "delims={} tokens=2,4" %j in ('reg query "%i" /v name ^|findstr "HKEY"') do @echo {%j}\{%k}
... wobei sich mein Algorithmus dahingehend unterscheidet, dass ich..
  • nur den einen einzigen Subkey mit dem String-Ende "}\Connection" auslese
  • den Wert "Lan-Verbindung" im RegKey ".....\Name" unterstelle.

Grüße
Biber
Bitte warten ..
Mitglied: bastla
25.09.2008 um 17:49 Uhr
... was sicherlich die exaktere Umsetzung ist (ich habe aber auch noch etwas bei meinem zweiten "findstr" nachgebessert ).

Grüße
bastla
Bitte warten ..
Mitglied: AndreasA
25.09.2008 um 18:39 Uhr
@bastla und biber

eure beiden Ansätze sind schon gut, jedoch produzieren sie nur eine Liste aller Netzwerkadapter.
Bei mir z.B. lautet die ausgabe von
01.
@echo off & setlocal 
02.
set "regkey=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network" 
03.
if exist %temp%\adapterlist.txt del %temp%\adapterlist.txt 
04.
for /f %%i in ('reg query "%regkey%" /s ^|find "}\Connection"') do @for /f "delims={} tokens=2,4" %%j in ('reg query "%%i" /v name ^|findstr "HKEY"') do (@echo {%%j}\{%%k})
bei mehreren Adaptern z.B. so
01.
{4D36E972-E325-11CE-BFC1-08002BE10318}\{03ECF24E-CFA6-470E-8778-154F50C00938}  
02.
{4D36E972-E325-11CE-BFC1-08002BE10318}\{1D08E21B-BC59-4E5C-AE4C-E57179B178D8}  
03.
{4D36E972-E325-11CE-BFC1-08002BE10318}\{3EBCDD6B-5657-453A-AC4B-B09B8BA231C1}  
04.
{4D36E972-E325-11CE-BFC1-08002BE10318}\{B46C56F5-4505-4D6A-BA77-4D04AA94A840}  
05.
{4D36E972-E325-11CE-BFC1-08002BE10318}\{BF173863-CDC8-4E35-BFF0-FB35F9EF28F0} 
Soweit ich den Fragesteller verstanden habe, sucht er aber genau den Adapter, dessen Name LAN-Verbindung
heisst und nicht etwa LAN-Verbindung 2
Daher habe ich mal biber's cmd-Version erweitert als adaptersearch.cmd
01.
@echo off & setlocal 
02.
set "regkey=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network" 
03.
if exist %temp%\adapterlist.txt del %temp%\adapterlist.txt 
04.
for /f %%i in ('reg query "%regkey%" /s ^|find "}\Connection"') do @for /f "delims={} tokens=2,4" %%j in ('reg query "%%i" /v name ^|findstr "HKEY"') do (@echo {%%j}\{%%k} >>%temp%\adapterlist.txt) 
05.
for /f %%a in (%temp%\adapterlist.txt) do (reg query "%regkey%\%%a\Connection" /s  >%temp%\tmp.txt 
06.
										   for /f "tokens=3,4" %%b in ('find "LAN-Verbindung" %temp%\tmp.txt') do (IF "LAN-Verbindung"=="%%b" (If ""=="%%c" echo %%a)) 
07.
										   del %temp%\tmp.txt											) 
08.
del %temp%\adapterlist.txt
und diese liefert mir nur genau den einzigen Adapter-Wert, den der Fragesteller sucht

Grüße AndreasA
Bitte warten ..
Mitglied: bastla
25.09.2008 um 20:05 Uhr
@AndreasA
Du hast leider recht ...

... allerdings sollte es eigentlich auch ohne "Temp"-Dateien gehen:
01.
@echo off & setlocal 
02.
set "regkey=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network" 
03.
set ID= 
04.
for /f %%i in ('reg query "%regkey%" /s ^|find "}\Connection"') do ( 
05.
    for /f "tokens=2*" %%a in ('reg query "%%i" /v name ^|findstr /i "name"') do ( 
06.
	if "%%b"=="LAN-Verbindung" for /f "tokens=2,4 delims={}" %%m in ("%%i") do set "ID={%%m}\{%%n}"    
07.
08.
09.
 
10.
if defined ID (  
11.
    echo %ID%  
12.
) else (  
13.
    echo Nicht gefunden ...  
14.
)
Grüße
bastla
Bitte warten ..
Mitglied: AndreasA
26.09.2008 um 10:17 Uhr
Zitat von bastla:
@AndreasA
Du hast leider recht ...
Wieso leider? Wir Admins sind auch nur Menschen und können mal was übersehen. Genau deshalb gibts ja dieses Forum

... allerdings sollte es eigentlich auch ohne
"Temp"-Dateien gehen:
01.
for /f "tokens=2*" %%a in ('reg query "%%i" /v name ^|findstr /i "name"') do (


Dafür liebe ich genau euch "Skript-Gurus" Aus ein paar Zeilen Code macht ihr noch weniger Zeilen. "tokens=2*" war genau der Ansatz der mir fehlte und daher nur der Umweg über Temp-Dateien.

Dangöö AndreasA
Bitte warten ..
Mitglied: Biber
26.09.2008 um 11:20 Uhr
Moin Shark16761, bastla und AndreasA,

@AndreasA
Aus ein paar Zeilen Code macht ihr noch weniger Zeilen.
Jepp, ich habe mich gestern abend auch noch dazu verleiten lassen, aus bastlas letzter Vorlage zu einem Einzeiler zusammenzudampfen....
Geht (natürlich), aber dann ist es ganz aus mit der Les- und Wartbarkeit.
Außerdem ist bei Onelinern naturgemäß die Möglichkeit der Quellcode-Kommentierung etwas eingeschränkt. - und das wollen wir hier eigentlich nicht als erstrebenswert hochhalten.

Soll heißen:
  • nimm bastla oder mich nicht immer ganz furchtbar ernst, wenn so ein eingedampfter (funktionierender) Codeschnipsel rausfällt, der aussieht als wären wir mit dem Kopf auf der Tastatur aufgeschlagen.
  • bei den heutigen Festplatten liegt die minimale Byte-Größe, die eine Datei belegen kann, bei 16384 ... egal ob da 100 Zeichen oder 2500 oder 10000 Zeichen drinstehen
  • manchmal hat ein (wegoptimierbarer) Zwischenschritt doch den Vorteil, dass die Pflegbarkeit und Nachvollzierbarkeit erheblich steigt.

@70065
Was Du aus diesem Thread mitnehmen solltest ist, dass eigentlich die von Dir formulierte Aufgabe (ermittle aus der Registry denjenigen Reg-Schlüsselnamen, der einen Wert mit dem Text "LAN" enthält) nicht mit vertretbarem Aufwand zuverlässig und eindeutig per Batch lösbar ist.

Alle drei Lösungsansätze beruhen auf selbst getesteten/ermittelten Zusatzinformationen ( die
Stirngwerte "}\Connection", "Name",....), die gar nicht Teil der Problembeschreibung waren.
Unterm Strich heißt es: Wenn Du so ein Problem hast, MUSST Du zumindest wissen:
  • wie heißt der "Vaterknoten", unterhalb dessen gesucht werden soll (den hast du gepostet)
  • wie heißt der letzte Unterknoten (der Wert "....\Connection" )
  • Wie der Schlüsselname, dessen Wert z.B. "LAN" sein soll (oben also: "Name")

Anderfalls ist es nicht lösbar.

Grüße
Biber
Bitte warten ..
Mitglied: 70065
26.09.2008 um 11:24 Uhr
Danke an alle es hat funktioniert!!!

Ja ich habe nur nach dem Adapter "Lan-Verbindung" gesucht.

Super!

Gruß
Bitte warten ..
Mitglied: AndreasA
26.09.2008 um 11:50 Uhr
@Biber

Zitat von Biber:
@AndreasA
Jepp, ich habe mich gestern abend auch noch dazu verleiten lassen,
aus bastlas letzter Vorlage zu einem Einzeiler zusammenzudampfen....
Geht (natürlich), aber dann ist es ganz aus mit der Les- und
Wartbarkeit.
Stimmt schon.
Außerdem ist bei Onelinern naturgemäß die Möglichkeit der Quellcode-Kommentierung
etwas eingeschränkt. - und das wollen wir hier eigentlich nicht als
erstrebenswert hochhalten.
Nun das hängt immer vom Bedarfsfall ab. Nicht jede Hilfs-Zusatzroutine muss ja mit Kommentar-Romanen gefüllt werden, wenn man deren Aufgabe schon kennt .
Soll heißen:
  • nimm bastla oder mich nicht immer ganz furchtbar ernst, wenn so ein eingedampfter > (funktionierender) Codeschnipsel rausfällt, der aussieht als wären wir mit dem Kopf auf der Tastatur aufgeschlagen.
is ja n Brüller, aber deine Art Humor hat mir schon immer gefallen. Tut gut so kurz vorm Wochenende. Und wenn ich euch nicht ernst nehmen würde, hätte ich etwa die Hälfte meiner Skripte nicht auf die Beine stellen können
* bei den heutigen Festplatten liegt die minimale Byte-Größe, die eine Datei belegen
kann, bei 16384 ... egal ob da 100 Zeichen oder 2500 oder 10000 Zeichen drinstehen
Is durchaus ein nachdenkenswertes Argument.
* manchmal hat ein (wegoptimierbarer) Zwischenschritt doch den Vorteil, dass die
Pflegbarkeit und Nachvollzierbarkeit erheblich steigt.
Daran habe ich mich bisher immer gehalten. Kann ja sein meine Skripte müssen ein paar Jahre später mal geändert werden. Ob ich da noch weiß warum ich was wie ge" ;-batcht" habe, wage ich jetzt schon mal zu bezweifeln.

@Shark16761
Was Du aus diesem Thread mitnehmen solltest ist, dass eigentlich die von Dir
formulierte Aufgabe (ermittle aus der Registry denjenigen Reg-Schlüsselnamen, der
einen Wert mit dem Text "LAN" enthält) nicht mit vertretbarem Aufwand
zuverlässig und eindeutig per Batch lösbar ist.

Alle drei Lösungsansätze beruhen auf selbst getesteten/ermittelten
Zusatzinformationen ( die Stirngwerte "}\Connection", "Name",....), die gar
nicht Teil der Problembeschreibung waren.
Unterm Strich heißt es: Wenn Du so ein Problem hast, MUSST Du zumindest wissen:
  • wie heißt der "Vaterknoten", unterhalb dessen gesucht werden soll (den hast du gepostet)
  • wie heißt der letzte Unterknoten (der Wert "....\Connection" )
  • Wie der Schlüsselname, dessen Wert z.B. "LAN" sein soll (oben also: "Name")

Anderfalls ist es nicht lösbar.

Und genau solch punktgenaue Zusammenfassung von Dir sind der Grund, warum ich sehr oft hier bin --> Man kann hier wirklich was lernen
Grüße Biber
Dankbare Grüße zurück
Bitte warten ..
Mitglied: AndreasA
26.09.2008 um 12:15 Uhr
Zitat von 70065:
Danke an alle es hat funktioniert!!!

Na Prima.
Ja ich habe nur nach dem Adapter "Lan-Verbindung" gesucht.

Bitte beim nächsten mal auch genauer die Problemstellung formulieren
Wobei sich für mich die Frage stellt warum du für das Modifizieren von Netzverbindungen nicht auf die betriebssystemeigene Netshell ( siehe Hilfe netsh ) zurückgreifst. Dort kannst du direkt mit dem Namen arbeiten

PS Du kannst dein Beitrag als gelöst markieren.

Gruß AndreasA
Bitte warten ..
Mitglied: 70065
26.09.2008 um 13:06 Uhr
Weil ich dort nur den D-Wort Wert "ShowIcon" erstellen möchte. Damit das Netzwerksymbol im Infobereich angezeigt wird.

Gruß bis zum nächsten Mal...
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Mit findstr einen pfad hinter einem zeichen zu variable setzen
Frage von bilaluiBatch & Shell3 Kommentare

Hallo, zurzeit beschäftige ich mich mit einer Batchdatei, die einen beliebigen Laufwerkspfad hinter einem kurzem Text mit "=" zu ...

Batch & Shell
Variable soll Variable setzen
gelöst Frage von mc-doubleyouBatch & Shell6 Kommentare

Hallo zusammen, ich versuche eben bestimmt durch eine Variable eine andere zu definieren, ich hatte gehofft das ginge so ...

VB for Applications
Registry-Unterschlüssel durchsuchen
gelöst Frage von goodbytesVB for Applications9 Kommentare

Hallo, irgendwie stehe ich auf der Leitung :-( Wie kann ich mittels vbs einen Wert jedes nächsten Unterschlüssels auslesen ...

Windows XP
Powershell: Registry-Wert setzen
gelöst Frage von AnkhMorporkWindows XP10 Kommentare

Hallo zusammen, Win XP, 32 bit, SP3, Patchstand tagesaktuell PS 2.0 Ich versuche die Auslagerungsdatei in der Registry neu ...

Neue Wissensbeiträge
MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 15 StundenMikroTik RouterOS6 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 15 StundenSicherheit1 Kommentar

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Administrator.de Feedback

Entwicklertagebuch: Die Startseite wurde überarbeitet

Information von admtech vor 18 StundenAdministrator.de Feedback9 Kommentare

Hallo Administrator User, mit dem Release 5.7 haben wir unsere Startseite überarbeitet und die Beiträge und Fragen voneinander getrennt. ...

Vmware

VMware Desktopprodukte sind verwundbar

Information von Penny.Cilin vor 23 StundenVmware

Die VMware-Anwendungen zum Umgang mit virtuellen Maschinen Fusion, Horizon Client und Workstation sowie die Plattform NSX sind verwundbar. Davon ...

Heiß diskutierte Inhalte
Windows Netzwerk
Netzwerk Neustrukturierung
Frage von IT-DreamerWindows Netzwerk16 Kommentare

Hallo verehrte Community und Admins, bei uns im Haus steht eine Neustrukturierung an. Dafür benötige ich von euch ein ...

Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server16 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Festplatten, SSD, Raid
USB Stick recovery
Frage von petereFestplatten, SSD, Raid15 Kommentare

Hallo, ich habe einen defekten USB-Stick, der nicht mehr lesbar ist. Er wird in WIN als unbekanntes Volume mit ...

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Frage von AkcentWindows 1015 Kommentare

Hallo, habe hier einen Windows 10 Rechner der von einem User umgefallen wurde (Beine übers Knie, an den PC ...