Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Reg.exe von verschieden Pfanden aus aufrufen

Frage Entwicklung Batch & Shell

Mitglied: mycroftone

mycroftone (Level 1) - Jetzt verbinden

19.10.2011 um 17:02 Uhr, 3419 Aufrufe, 4 Kommentare

Ich möchte werte aus der Registry auslesen.

Mit der Zeile
FOR /F "skip=2 tokens=1,2*" %%A IN ('reg QUERY "HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList" /v ProfilesDirectory') DO SET _ProfilesDirectory=%%C
funktiniort es auch wunderbar.

Nur habe ich die reg.exe nicht immer an der selben stellen.

Deswegen habe ich folgenden Zeile.

FOR /F "skip=2 tokens=1,2*" %%A IN ('%reg-path% QUERY "HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList" /v ProfilesDirectory') DO SET _ProfilesDirectory=%%C

Wenn reg-path z.b. den Wert {C:\temp\reg.exe} hat funktioniert es auch immer super. set "reg-path=C:\temp\reg.exe"

Nicht immer ( in 5% der Falle jedenfalls unter Windows 2000) funktioniert leider reg.exe
also bei set "reg-path=reg.exe" kommt manchmal die Fehlermeldung
Der Befehl reg.exe ist enweder falsch geschrieben oder nicht vorhanden.

Dann also mit fester Pfadangabe. Ist auch keine Problem habe ich mir gedacht.

Wenn jetzt aber der Pfad zur reg Datei ein Leerzeichen hat komm es zur Fehlermeldung

z.b. bei

set "reg-path=:\Dokumente und Einstellungen\Administrator\Desktop\DC-Support\reg.exe"
FOR /F "skip=2 tokens=1,2*" %%A IN ('%reg-path% QUERY "HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList" /v ProfilesDirectory') DO SET _ProfilesDirectory=%%

Kommt die Fehlermeldung Befehl C:\Dokumente nicht gefunden . Da habe ich mir gedacht auch keine Problem. dann setzt ich halt den Pfad in Hochkomma

FOR /F "skip=2 tokens=1,2*" %%A IN ('"%reg-path%" QUERY "HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList" /v ProfilesDirectory') DO SET _ProfilesDirectory=%%

Aber irgendwie erkennt er die Hochkomma nicht und es kommt die selbe Fehlermeldung. Da habe ich mir dann gedacht naja vielleicht muß ich die " auch negieren.

Aber
FOR /F "skip=2 tokens=1,2*" %%A IN ('""%reg-path%"" QUERY "HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList" /v ProfilesDirectory') DO SET _ProfilesDirectory=%%
Oder
FOR /F "skip=2 tokens=1,2*" %%A IN ('"""%reg-path%""" QUERY "HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList" /v ProfilesDirectory') DO SET _ProfilesDirectory=%%

Bringen auch nicht das gewünschte Ergebnis.

Nur alleien ein "%reg-path%" QUERY "HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList" /v ProfilesDirectory' funktioniert.

Aber in der FOR Schleife funktioniert das ganze irgendwie nicht.

Kann mir da jemand bei dem Syntakt helfen.
Mitglied: bastla
19.10.2011 um 18:25 Uhr
Hallo mycroftone!

Unter der Annahme, dass an das Ende Deiner Test-Zeilen auch noch ein "C" zu denken wäre (ich hoffe, der Hinweis war nicht syntaktlos ), könntest Du mal
FOR /F "skip=2 tokens=1,2*" %%A IN ('call "%reg-path%" QUERY "HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList" /v ProfilesDirectory') DO SET "_ProfilesDirectory=%%C"
versuchen ...

Grüße
bastla
Bitte warten ..
Mitglied: Biber
21.10.2011 um 20:21 Uhr
Moin mycroftone,

ergänzend zu bastlas Hinweis noch die Anmerkung:
Wenn du doch eh schon Variablen verwendest, dann mach doch das Ganze ein büschen lesbarer, indem du statt
Set "reg-path=X:\Pfad zur Exedatei\reg.exe" 
FOR /F "skip=2 tokens=1,2*" %%A IN ('call "%reg-path%" QUERY "HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList" /v ProfilesDirectory') DO SET "_ProfilesDirectory=%%C"
.... lieber 2 Variablen verwendest.
  • Eine für den Pfad in der Registry --> die würde ich %RegPath% nennen
  • Eine für den Pfad und Dateinamen der Reg.exe -> die würde ich %regexe% nennen

Dann sähe es so aus:
Set "regexe=X:\Pfad zur Exedatei\reg.exe" 
Set "RegPath=HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList"  
 
FOR /F "skip=2 tokens=1,2*" %%A IN ('call "%regexe%" QUERY "%regPath%" /v ProfilesDirectory') DO SET "_ProfilesDirectory=%%C"
Finde ich (in Anbetracht der Umstände) etwas lesbarer und weniger tippfehleranfällig.

Obwohl - GANZ GAR NIE NICHT würde ich bei mir Variablen wie %_ProfilesDirectory%, also mit Unterstrich beginnende verwenden.
Wenn du Konflikte mit eventuell existierenden Variablen vermeiden willst, dann definiere deine Variablen mit Scope "privat", also setze eine Anweisung "SetLocal" an den Anfang des Bätsches.

Und/oder, wenn du den sprechenden Variablennamen %ProfilesDirectory% gerne beibehalten möchtest, dann nenne deine Variable

Set "myProfilesDirectory=%%C"
Grüße und baldiges Wochenende
Biber

[Edit] Tippfehlerkorrektur. Thx@bastla für den berechtigten Hinweis [/Edit]
Bitte warten ..
Mitglied: bastla
21.10.2011 um 23:25 Uhr
@Biber
%regexe% ist in der entscheidenden Zeile noch etwas unterrepräsentiert ...

Grüße
bastla
Bitte warten ..
Mitglied: mycroftone
03.11.2011 um 10:10 Uhr
Danke Bastel

call %reg-path% funktioniert.

Die komplett funktionierende Zeile schaut wie folgt aus.

FOR /F "skip=2 tokens=1,2*" %%A IN ('call "%reg-path%" QUERY "HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList" /v ProfilesDirectory') DO SET _ProfilesDirectory=%%C

@Biber
setlocal habe ich am Anfang gesetzt
Den Pfad zur reg.exe ermittele ich dann um ihn später beim auslesen verschieden Registry HIV mit Werten zu verwenden. Deswegen ist eine Variabel für die HIV unpraktikabel.

Aber trozdem danke für alle eure hinweise .
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(2)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (15)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Backup
Clients als Server missbrauchen? (10)

Frage von 1410640014 zum Thema Backup ...