Jump to content

Batch Variable aus Registrierung mit Leerzeichen


Direkt zur Lösung Gelöst von Ody,
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo zusammen,

 

ich hab wieder ein kleines Problem wo ich nicht weiterkomme.
Ich möchte einen Wert aus der Windows Registrierung auslesen und in eine Variable schreiben.
Soweit kein Problem Code:

for /f "tokens=3 skip=2" %%i in ('reg query "%REG%" /v Pfad') do set VAR=%%i

%REG% ist der Schlüssel der vorher definiert wurde mit "Pfad" wird die Zeichenfolge ausgewertet und in die Variable VAR geschrieben.

 

Jetzt zu meinen Problem:

Die Variable hat Leereichen was dafür sorgt das beim ersten Leerzeichen Schluss ist.
Wert: C:\Program Files (x86)\Programm

Wert in der Variable C:\Program

ohne Leerzeichen Funktioniert es Problemlos.

 

muss ich mit delims was definieren? Hab mehrere varianten versucht ohne das Ziel zu erreichen.

 

Vielen Dank im voraus
Ody
 


 

Link zu diesem Kommentar

Hallo Nobbyaushb,

 

das hab ich auch in allen möglichen Varianten versucht aber nachdem der Wert direkt
In der for Schleife ausgelesen und in die Variable geschrieben wird hab ich da ja nicht viel Möglichkeiten?

Hab sogar mit usebackq ein bisschen rumgespielt.

Grüße
Ody
 


Hi lefg,

 

ich glaub nicht das ich damit ans Ziel komme, ich will den Pfad ja mit Leerzeichen weil er später verwendet wird

um z.B. Dateien zu lesen oder exen zu öffnen. Ich muss aber auch gestehen das ich mit der Beschreibung von %PATH:str1=str2% nicht 

ganz klar kommen.

LG
Ody
 

Link zu diesem Kommentar

Hi Ody,

 

ich hab meinen Post gelöscht, da er wohl nicht dein Problem trifft. Du willst ja kein Leerzeichen aus einer Variablen entfernen.

 

Falls ich es richtig verstanden, wird wegen des Leerzeichen im Registryeintrag beim Auslesen das Token verkürzt, beendet beim Leerzeichen? Oder? Das Leerzeichen ist dann Delimeter. Wie das Leerzeichen als Delimeter inaktivieren? Ich weiss es nicht mehr.

 

Wie mir scheint, liest Du jetzt nur das Token 3 aus. Wie wäre es, Token 3+4 auszulesen?

bearbeitet von lefg
Link zu diesem Kommentar

Das Token 3 ist damit beim Leerzeichen zu Ende, danach beginnt das Token 4. Du musst alsi schauen, wie werden beide Token ausgelesen? Das ergibt sich aus der Beschreibung und ist auch im Web vielfach an Beispielen aufgeführt.

 

 

 

FOR /F  ["<optionen>"] %%<variable> IN ('<befehl1>') DO <befehl2>
       Ergebnis von <befehl1> ergibt Wertevorrat für %%<variable>

 

<variable>: ein Buchstabe (Groß- und Kleinschreibung wird unterschieden)
<befehl>:    auch Zusammenfassung mit ( ... & ...) oder ... && ... oder ...|| ... erlaubt
<wertevorrat>:  mögliche Werte; durch Leerzeichen, , oder ; getrennt
<optionen>:

eol=c                       c  Zeilen, die mit <c> beginnen, werden übergangen
skip=n                     n Zeilen werden am Dateianfang übersprungen
delims=x..               x Trennzeichen ersetzen Standard (Leerzeichen und Tab)
tokens=[x,..[,m-n][,*]]  gibt an, welche Token jeder Zeile ausgewertet werden: x-ter; m bis n-ter
*: restliche Zeile wird zugeordnet
wird mehr als 1 Token angegeben, werden dafür weitere Variablen definiert (alphabetisch aufsteigend nach <variable>; beachten, daß z nicht überschritten wird!)
bearbeitet von lefg
Link zu diesem Kommentar

Guten Abend zusammen,

 

erst mal vielen Dank für eure Rückmeldung und Bemühungen!

 

@lefg

Ich hab natürlich vor dem Post schon versucht eine Lösung zu finden, bin auch auf zwei Einträge gestoßen wo es
um Werte aus Registrierung auslesen usw. geht bei einem wurde dann genau die Frage gestellt (von einem anderen User)
und die Antworten blieben aus :-)

 

Das mit den Tokens ist ein Ansatz, aber was bringt es mir einen Wert auszulesen wenn ich wissen muss wie viele Leerzeichen er enthält

dann doch lieber gleich im Batchfile mit set fixen und Standards definieren. Aber Flexibel wäre doch einfach zu schön :-)

ich suche auf jeden Fall weiter.

 

Deine Idee mit delims=°, Tokens=3,* (Da hatte ich kurz Hoffnung) hat leider nicht funktioniert

 

@blub

hab ich versucht:

FEHLER: Der angegebene Registrierungsschlüssel bzw. Wert wurde nicht gefunden.

 

@zahni
mist er hat mich entdeckt :-)

Du wirst lachen, aber ich hab mir sogar Tutorials angeschaut und werde mich da nach und nach rantasten

aber Veränderung dauert bekanntlich seine Zeit und Lösungen wollen meistens gestern schon durch die Tür.
Aber ich hab es mir zu Herzen genommen, wie gesagt bin kein scripter und daher nur sehr langsam bei sowas. Danke!

Euch allen jetzt erst mal ein schönes Wochenende!
 

 

 


@lefg

Nachdem man nur mit testen lernen und wieder testen sein Wissen erweitern kann, hab ich mir deine Token Idee angeschaut:

for /f "tokens=3,4,5 skip=2 delims= " %a in ('reg query "%REG%" /v Pfad') do set var1=%a&set var2=%b&set var3=%c
set var=%var1% %var2% %var3%
echo %var%

In meinem Beispiel sind es 3 weitere Tokens

Nummer 3=C:\Program

Nummer 4=Files

Nummer 5=(x86)\Programm\

 

nachdem mit delims das Leerzeichen als Trennzeichen gesetzt ist, alle zusammen in eine neue Variable Schreiben und dort die Leerzeichen wieder setzten.

 

Resultat von %var%:

C:\Program Files (x86)\Programm\

 

:-)

Aber wie gesagt Flexibel wäre schön, da ich nicht weiß wie viele Leerzeichen im Pfad in der Registrierung stehen.
Ich suche weiter und bin nach wie vor für Denkanstöße dankbar
 


 

Link zu diesem Kommentar

Schau dir dieses Beispiel an:

IF "%ProgramFiles(x86)%" == "" GOTO NOPATH
   :YESPATH
   @ECHO The PATH environment variable was detected.
   PATH=%ProgramFiles(x86)%
   pause
   GOTO END
   :NOPATH
   @ECHO The PATH environment variable was NOT detected.
   PATH=C:\DOS;
   GOTO END
   :END

Wenn Du das in ein Batch bringst und die Batch per Doppelklick startest, was wird dir angezeigt?

 

EDIT: Hier ist das Original: https://support.microsoft.com/de-de/kb/121170

 

Das was Du vermutlich suchst sind die sog. Umgebungsvariablen.

http://www.winfaq.de/faq_html/Content/tip0000/onlinefaq.php?h=tip0328.htm

http://www.windows7-tuning.de/tuning-tipps-anleitungen/system-allgemeines/verfugbare-umgebungsvariablen-in-windows-7-liste/

 

Wie arbeite ich in Batchdateien mit Variablen: https://www.administrator.de/wissen/arbeite-batch-umgebungsvariablen-erstellung-umgang-erweiterungen-ver%C3%A4nderungen-117069.html

https://de.wikipedia.org/wiki/Umgebungsvariable

bearbeitet von Sunny61
Link zu diesem Kommentar

Hm - da fällt mir spontan SETX ein - kann mit /K den Inhalt von Registrierungswerten in Umgebungsvariablen schreiben smile.gif

Sunny, wenn das in einem Deiner unzähligen Links schon beschrieben ist, hab ich nix gesagt...

Nein, das steht da nicht drin. Für mich sieht das allerdings so aus, als ob er TO etwas auslesen möchte das schon als Umgebungsvariable vorhanden ist. Deshalb der Hinweis.

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...