Ody 0 Geschrieben 4. März 2016 Melden Teilen Geschrieben 4. März 2016 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 vorausOdy Zitieren Link zu diesem Kommentar
Nobbyaushb 1.475 Geschrieben 4. März 2016 Melden Teilen Geschrieben 4. März 2016 Meistens hilft es Hochkomma zu verwenden, je nach Sprache " oder ´ ;) Zitieren Link zu diesem Kommentar
Ody 0 Geschrieben 4. März 2016 Autor Melden Teilen Geschrieben 4. März 2016 Hallo Nobbyaushb, das hab ich auch in allen möglichen Varianten versucht aber nachdem der Wert direktIn 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üßeOdy 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. LGOdy Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 4. März 2016 Melden Teilen Geschrieben 4. März 2016 (bearbeitet) 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 4. März 2016 von lefg Zitieren Link zu diesem Kommentar
Ody 0 Geschrieben 4. März 2016 Autor Melden Teilen Geschrieben 4. März 2016 ja genau er gib nur alles bis zum ersten Leerzeichen aus Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 4. März 2016 Melden Teilen Geschrieben 4. März 2016 (bearbeitet) 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 übergangenskip=n n Zeilen werden am Dateianfang übersprungendelims=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 zugeordnetwird mehr als 1 Token angegeben, werden dafür weitere Variablen definiert (alphabetisch aufsteigend nach <variable>; beachten, daß z nicht überschritten wird!) bearbeitet 4. März 2016 von lefg Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 4. März 2016 Melden Teilen Geschrieben 4. März 2016 versuch mal 3-fache Anführungszeichen am Anfang und Ende der Variable: ('reg query """%REG%""" /v Pfad') Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 4. März 2016 Melden Teilen Geschrieben 4. März 2016 (bearbeitet) Ob delims=° oder etwas Ähnliches schon reicht, das Leerzeichen und den Tabulator als Delimeter unwirksam zu machen? Oder Tokens=3,* zum Lesen ab Token 3 bis EOL? bearbeitet 4. März 2016 von lefg Zitieren Link zu diesem Kommentar
zahni 554 Geschrieben 4. März 2016 Melden Teilen Geschrieben 4. März 2016 Hallo Ody, nix für ungut, möchtest Du nicht doch mal bei Powershell vorbeischauen? Für den Anfang kann man sich auch was "zusammen googeln". Zitieren Link zu diesem Kommentar
Ody 0 Geschrieben 4. März 2016 Autor Melden Teilen Geschrieben 4. März 2016 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 esum 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. @zahnimist 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 Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 5. März 2016 Melden Teilen Geschrieben 5. März 2016 Welchen Pfad/Key willst Du denn lesen? Zitieren Link zu diesem Kommentar
Sunny61 807 Geschrieben 5. März 2016 Melden Teilen Geschrieben 5. März 2016 (bearbeitet) 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 5. März 2016 von Sunny61 Zitieren Link zu diesem Kommentar
daabm 1.366 Geschrieben 5. März 2016 Melden Teilen Geschrieben 5. März 2016 Hm - da fällt mir spontan SETX ein - kann mit /K den Inhalt von Registrierungswerten in Umgebungsvariablen schreiben Sunny, wenn das in einem Deiner unzähligen Links schon beschrieben ist, hab ich nix gesagt... Zitieren Link zu diesem Kommentar
Sunny61 807 Geschrieben 5. März 2016 Melden Teilen Geschrieben 5. März 2016 Hm - da fällt mir spontan SETX ein - kann mit /K den Inhalt von Registrierungswerten in Umgebungsvariablen schreiben 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. Zitieren Link zu diesem Kommentar
massaraksch 41 Geschrieben 6. März 2016 Melden Teilen Geschrieben 6. März 2016 Hi, Batch und FOR-Gefrickel ist ja sowas von Gestern... ;) for /f "tokens=3*" %%i in ('reg query "%REG%" /v Pfad') do set VAR=%%i%%j Was soll eigentlich das seltsame skip=2? Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.