mensa 10 Geschrieben 22. Januar 2008 Melden Teilen Geschrieben 22. Januar 2008 Hallo, gibt es eine Möglichkeit einen Registry Wert (Zeichenfolge) auszulesen, zu ergänzen und dann wieder abzuspeichern? Ich möchte den Wert also nicht einfach überschreiben, sondern am Ende des Werts einfach etwas hinzufügen. Wie macht man das am besten? Auch einfach in einem .reg File, aber mit welchem Befehl / Kommando? Zitieren Link zu diesem Kommentar
Tomy Tom 10 Geschrieben 22. Januar 2008 Melden Teilen Geschrieben 22. Januar 2008 Moment mal, mit dem ergänzen und dem abspeichern überschreibst du ja den alten Wert. Hierbei ist es egal um welchen Wert (Binary, DWORD usw.) es sich handelt. In VB gelten hierbei folgende Werte (ohne die API Unterstützung): RegRead = Wert bzw. Schlüssel auslesen. RegWrite = Wert bzw. Schlüssel schreiben. RegDelete = Wert bzw. Schlüssel löschen. Zitieren Link zu diesem Kommentar
mensa 10 Geschrieben 22. Januar 2008 Autor Melden Teilen Geschrieben 22. Januar 2008 Ok, danke! Das beim Abspeichern der alte Wert überschrieben wird ist klar. Es geht mir ja nur darum, dass die ursprünglichen Werte nicht verloren, sondern nur ergänzt werden. Das ist also nur mit VB möglich? Nicht direkt in einem .reg File? Zitieren Link zu diesem Kommentar
Biber 10 Geschrieben 22. Januar 2008 Melden Teilen Geschrieben 22. Januar 2008 Moin mensa, nun macht da nicht so einen Heckmeck von. Wenn Du die Reg.exe auf dem Rechner hast, ginge es mit zwei, drei Batchzeilen. Beispiel bzw. Proof-of-Concept vom CMD-Prompt: >for /f "tokens=3" %i in ('reg query HKCU\Software\odbc\odbc.ini\MyConnection /v Description^|find "Description"') do @set "thisvalue=%i"set thisvaluethisvalue=testdatenbank[/Code] Dieses Beispiel würde in die Variable %thisvalue% den vorhandenen Textwert des RegKeys "HKCU\...Whatever" Eintrag "Description" auslesen. --> etwas anhängen: Set "thisvalue=%thisvalue%_in_Lummerland" Neu setzen. [Code]reg add HKCU\Software\odbc\odbc.ini\Myconnection /v Description /d %thisvalue% /f[/Code] Das wars. Im Batch (ungetestete Skizze). [Code]@echo off & setlocalSet "regKey=HKCU\Software\odbc\odbc.ini\MyConnection"Set "regEntry=Description"Set "ToAppend=_in_Lummerland"for /f "tokens=3" %%i in ('reg query %RegKey% /v %RegEntry%^|find "%RegEntry%"') do @set "thisvalue=%%i"Set "thisvalue=%thisvalue%%toAppend%Reg add %RegKey% /v %RegEntry% /d %thisvalue% /f[/Code] Natürlich würde ich die drei im Moment fest verdrahteten Werte %regkey5, %regval% und vor allem %ToAppend% als Parameter der batchdatei vorsehen - sonst macht es wenig Sinn, einen Batch zu schreiben. Grüße Biber Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 22. Januar 2008 Melden Teilen Geschrieben 22. Januar 2008 Und per Powershell, die früher oder später Batch und VBS ablösen soll, sinds effektiv nur 3 kurze Zeilen: #Powershell 1.0 # by blub, 22.1.2008 # veraendern eines Registrywertes bzw. anhaengen eines Strings # Parameter mit Beispielwerten setzen $path="HKLM:\SOFTWARE\_testkey" $Value="blub" $appendString="def" # Value auslesen $a=get-itemproperty $path -name $Value # Value verändern (hängt hier den String "def" an) $a.$Value = $a.$Value + $appendstring # Value zurückschreiben Set-ItemProperty -name $Value -path $path $a.$Value Running Windows PowerShell Scripts cu blub Zitieren Link zu diesem Kommentar
Tomy Tom 10 Geschrieben 23. Januar 2008 Melden Teilen Geschrieben 23. Januar 2008 Ok, danke!Das beim Abspeichern der alte Wert überschrieben wird ist klar. Es geht mir ja nur darum, dass die ursprünglichen Werte nicht verloren, sondern nur ergänzt werden. Das ist also nur mit VB möglich? Nicht direkt in einem .reg File? Beim ändern des entsprechenden Wertes wird sowohl per VB-Script als auch in den .REG-Files ja nur der Wert verändert, der hier angegeben wird. Alle anderen Werte bleiben hier so wie diese sind. Es ist im Prinzip so wie in einem Ordner, bei dem verschiedene Dateien vorhanden sind. Wenn du eine Datei veränderst dann wird nur diese geändert, die anderen Dateien aber nicht. Wichtig ist auch das man beim Befehl RegRead den Key in Klammern setzt ("...\...\...) Bei RegWrite sind hierbei die Klammern weg zu lassen "...\...\..." Ein weiterer Knackpunkt ist das du beim schreiben über RegWrite mit "...\...\..." einen Wert angibst, mit "...\...\...\" allerdings einen Schlüssel erzeugst. Zitieren Link zu diesem Kommentar
jantrummel 0 Geschrieben 14. Februar 2013 Melden Teilen Geschrieben 14. Februar 2013 Hallo, erstmal Danke für die ganzen Infos. Hat mich schon mal weiter gebracht. Ich habe jetzt folgendes Problem, dass ich für den Wert den ich in die Registry eintragen muss ein Return benötige. Hier mal mein Beispiel: @echo off & setlocalSet "regKey=HKCU\Software\Microsoft\Internet Explorer\Main"Set "regEntry=Start Page"Set "regEntry2=Secondary Start Pages"Set "ToAppend=http://www.seite1.de"Set "ToAppend2=http://www.seite2.de "FOR /F "tokens=4 delims= " %%A IN ('REG QUERY %regKey% /v %regEntry%) DO SET thisvalue=%%A"Set "thisvalue=%ToAppend2% (hier müsste nun das Enter rein)%thisvalue%"REG ADD %regKey% /v %regEntry% /t Reg_SZ /d %ToAppend% /fReg ADD %regKey% /v %regEntry% /t REG_MULTI_SZ /d %thisvalue% /f Ich möchte also den Wert der als Startseite im IE eingetragen war auslesen, in eine Variable speichern und anschließend eine bestimmte Seite als Startseite eintichte. Die ausgelesene Seite aus der Variable soll er nur in den abderen Registry-Schlüssel eintragen und dazu noch eine zusätzliche Seite. Das Problem ist halt nur, wenn ich den Wert direkt in der Registry eintrage, dann muss ich die Werte durch ein Enter getrennt eingeben. Hat jemand ein Tipp für mich? Zitieren Link zu diesem Kommentar
jeffi24 0 Geschrieben 11. September 2014 Melden Teilen Geschrieben 11. September 2014 Hallo, ich habe das Script benutzt: @echo off & setlocal Set "regKey=HKCU\Software\odbc\odbc.ini\MyConnection" Set "regEntry=Description" Set "ToAppend=_in_Lummerland" for /f "tokens=3" %%i in ('reg query %RegKey% /v %RegEntry%^|find "%RegEntry%"') do @set "thisvalue=%%i" Set "thisvalue=%thisvalue%%toAppend% Reg add %RegKey% /v %RegEntry% /d %thisvalue% /f dieses funktioniert an sich auch, aber ich habe einen Regedit Eintrag der ca 1000 Zeichen lang ist, das Script "schneidet" aber den Eintrag bei ca 100 Zeichen ab, weiß das jemand wo das Problem liegt? Zitieren Link zu diesem Kommentar
daabm 1.354 Geschrieben 11. September 2014 Melden Teilen Geschrieben 11. September 2014 (bearbeitet) "tokens=1,2,*" wäre sinnvoller - sonst landet alles nach dem ersten Leerzeichen in 4... Dann aber mit %%k statt %%i beim "do". bearbeitet 11. September 2014 von daabm 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.