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

Frage Entwicklung Batch & Shell

GELÖST

Reg.exe von verschieden Pfanden aus aufrufen

Mitglied: mycroftone

mycroftone (Level 1) - Jetzt verbinden

19.10.2011 um 17:02 Uhr, 3462 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 ..
Ähnliche Inhalte
Entwicklung
Mit USB Stick verschieden Programme aufrufen u.a. Outlook-Webaccess
gelöst Frage von rababar2014Entwicklung7 Kommentare

Hallo Leude, ich plane gerade ein kleine Spielerei für unterwegs. Ich möchte gerne einen USB-Stick so modifizieren, dass man ...

JavaScript
Zweiter Aufruf einer Funktion unterbricht ersten Aufruf
gelöst Frage von BadgerJavaScript6 Kommentare

Hallo Leute, ich habe folgendes Problem: Ich habe eine JS Funktion welche dann eine jQuery ajax Funktion aufruft Soweit ...

Batch & Shell
Exe ohne Fenster aus vb aufrufen
gelöst Frage von Mit.ohne.AhnungBatch & Shell12 Kommentare

Hallo Zusammen, ich erstelle gerade ein Programm mit Visual Studio und möchte eine exe aufrufen ohne das ein Fenster ...

Datenbanken
Oracle Procedure Aufruf im Trigger
gelöst Frage von BadFsaadKlDatenbanken3 Kommentare

Moin zusammen, ich habe ein kleines Problem, einen Datenbank Trigger zum laufen zu bekommen, und hoffe Ihr könnt mir ...

Neue Wissensbeiträge
Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 10 StundenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 11 StundenSicherheit7 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 12 StundenSicherheit8 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Sicherheit

Meltdown und Spectre: Die machen uns alle was vor

Information von Frank vor 12 StundenSicherheit12 Kommentare

Aktuell sieht es in den Medien so aus, als hätten die Hersteller wie Intel, Microsoft und Co den aktuellen ...

Heiß diskutierte Inhalte
Windows 10
Netbook erkennt Soundkarte nicht - keinerlei Info zum Hersteller und Modell vom Netbook und Hardware bekannt
Frage von 92943Windows 1031 Kommentare

Guten Tag, meine Schwester reist in einigen Wochen für ein paar Monate ins Ausland und hat sich dafür ein ...

Batch & Shell
Anmeldevorgang für Informatikraum (Schule) unter Windows
gelöst Frage von IngenieursBatch & Shell29 Kommentare

Hey zusammen, ich werde in naher Zukunft den Informatik Raum meiner jetzigen Schule von dem aktuellen Betreiber übernehmen (Vertrag ...

Netzwerkgrundlagen
Welches Modem für VDSL 50000 der T-Com
Frage von Windows10GegnerNetzwerkgrundlagen20 Kommentare

Hallo, ein Kollege von mir will sich VDSL50000 von der T-Com holen, um daran einen Server zu betreiben. Ich ...

Batch & Shell
AD-Abfrage in Batchdatei und Ergebnis als Variable verarbeiten
gelöst Frage von Winfried-HHBatch & Shell19 Kommentare

Hallo in die Runde! Ich habe eine Ergänzungsfrage zu einem alten Thread von mir. Ausgangslage ist die Batchdatei, die ...