monoffel
Goto Top

Batch - Registry schreiben, lesen

Ich hab ein kleines Programm geschrieben, welches 2 werte aus Dateien liest, die aber nun immer aus der registry gelesen werden sollen.
Ich hab Windows XP SP3, welche Version von cmd und regedit.exe oder so weis nich wo man das sieht)

Also ich hab vor so 2 Wochen angefangen mir selber so nen bisschen Batch wisse anzueignen. Vieles habe ich auch von dieser Seite gelernt.
Wo oben irgendwo stehen (müsste)^^ habe ich ein Programm was 2 Variablen aus Text dateien liest. ( Besser wär natürlich gewesen beide aus einer aber da bin ich zu doof für.)

Jezt will ich aber dass das Programm die Werte aus der Registry liest, aber auch was reinschreibt beim ersten Start der Datei ( Nen Setup sozusagen )

In den anderen Beiträgen versteh ich nich alles und ich hab keinen gefunden, mit nem ähnlichen Problem und dann das Wissen zusammenzusetzen aus irgendwelchen Sachen die ich nur halb verstehe schaff ich irgendwie nich...

Mein Plan soweit: ( is nur nen grober Plan, wo die Befehle natürlich nich so gehen würden)
:anfang
if not exist firstrun do reg add firstrun wert 1 (firstrun is nen schlüssel der in HKLM\SOFTWARE\blabla\ mit dem wert 1 hin soll aber nur wenn der schlüssel noch nich existiert)
if firstrun 1 goto setup
nach setup: key is da nix erstellen, firstrun is nich 1 nix machen (das hier erst lesen nach :setup) :-)

dann werte auslesen
reg query bla bla > set info1=ausgelesen1 ( hier gehts natürlich nich mit  > set bla ; aber ich will halt irgendwie die ausgelesenen daten in variablen setzen)
reg query bla bla > set info2=ausgelesen2
goto rest des programms

:setup
echo was soll setting 1 sein?
set /p setting1=
reg add setting1
echo was soll 2 sein?
set /p setting2=
reg add setting2
setup fertig
reg add firstrun wert 0 & goto anfang (hier wichtig den wert da lassen, aber auf null setzen oder sonstwas nurnich 1)
:::::::::::::::plan ende

P.S.: Mit registry befehlen hab ich noch gar nix gemacht/geschafft. Außerdem der eine Wert, der ausgelesen werden soll ist ein Passwort, was wenn möglich noch irgendwie verschlüsselt werden soll.
...Und warum ich die nich per Hand erstellen und einstelle: Das Prog. is nich nur für mich sondern auch für andere, die sich mit sowas garnicht auskennen.

Content-ID: 116168

Url: https://administrator.de/contentid/116168

Ausgedruckt am: 26.11.2024 um 02:11 Uhr

schregi82
schregi82 15.05.2009 um 21:04:25 Uhr
Goto Top
> :anfang
> if not exist firstrun do reg add firstrun wert 1 (firstrun is nen
> schlüssel der in HKLM\SOFTWARE\blabla\ mit dem wert 1 hin soll
> aber nur wenn der schlüssel noch nich existiert)
> if firstrun 1 goto setup
> nach setup: key is da nix erstellen, firstrun is nich 1 nix machen
> (das hier erst lesen nach :setup) :-)
> 
> dann werte auslesen
> reg query bla bla > set info1=ausgelesen1 ( hier gehts
> natürlich nich mit  > set bla ; aber ich will halt irgendwie
> die ausgelesenen daten in variablen setzen)
> reg query bla bla > set info2=ausgelesen2
> goto rest des programms
> 
> :setup
> echo was soll setting 1 sein?
> set /p setting1=
> reg add setting1
> echo was soll 2 sein?
> set /p setting2=
> reg add setting2
> setup fertig
> reg add firstrun wert 0 & goto anfang (hier wichtig den wert da
> lassen, aber auf null setzen oder sonstwas nurnich 1)
> :::::::::::::::plan ende
 


format a:, b:, c:, d:, e, und überhaupt ...
echo wow, da hast du dich aber richtig bemüht.
echo darf ich das montag morgens im büro ans schwarze brett pinnen ?
rem (ich machs auch nur a4, versprochen)
exit

Wenn es um nur 2 Registry-Werte auf 1-5 clients würde ich das ganze manuell (regedit) machen, ohne Batch.

Ansonten leg ich dir diesen Beitrag ans Herz:
Registry-Wert mit Batch auslesen, ändern und wieder einspielen
oder noch 10 andere hier im Forum, einfach die Suche benutzen.

:::::::::::::::plan ende

face-wink
monoffel
monoffel 15.05.2009 um 21:14:44 Uhr
Goto Top
Zitat von @schregi82:
Wenn es um nur 2 Registry-Werte auf 1-5 clients würde ich das
ganze manuell (regedit) machen, ohne Batch.

von mir:
...Und warum ich die nich per Hand erstellen und einstelle: Das Prog. is nich nur für mich sondern auch für andere, die sich mit sowas garnicht auskennen.

(is für nen freund und ich wills halt gut machen deshalb auch die tolle code box -> weil man sich erst nen plan machen soll was man vor hat, wenn es gut sein soll ohne unnötiges zeugs oder so)

Die suche hab ich benuzt und den Artikel ( in dem link ) kenn ich auch schon, nur blick ich da nich (ganz) durch
schregi82
schregi82 15.05.2009 um 21:48:24 Uhr
Goto Top
is nich nur für mich sondern auch für andere, die sich mit
sowas garnicht auskennen.

Das ist natürlich klar, wen sich der andere nicht auskennt

(is für nen freund und ich wills halt gut machen deshalb auch
die tolle code box -> weil man sich erst nen plan machen soll was
man vor hat, wenn es gut sein soll ohne unnötiges zeugs oder so)

Ähhhmmm Ja, Code Box = was ist das jetzt genau ?

Fangen wir nochmal GANZ von vorne an:
Wie sieht der IST-Zustand aus ?

- Welche Reg-Einträge sollen auf welche Werte hin geprüft werden
- Welchen Werte sollen gesetzt werden ?

PS: Ich komm mir etwas an Harter Fall erinnert vor, sorry.
monoffel
monoffel 15.05.2009 um 22:41:56 Uhr
Goto Top
Zitat von @schregi82:
Ähhhmmm Ja, Code Box = was ist das jetzt genau ?

die box die mit (code) bla bla (/code) entsteht nur halt dreiecks klammern

Fangen wir nochmal GANZ von vorne an:
Wie sieht der IST-Zustand aus ?

Also als erstes mal (if not exist firstrun do reg add firstrun wert 1)
ich will überprüfen ob der schlüssel firstrun in meinem reg ordner ist, wenn nich soll er
reg add hklm\software\bla /v firstrun /d 1

dann soll überprüft werden, ob der wert firstrun 1 ist, wenn ja soll er goto machen
problem hier ist ich weis nicht wie ich das ganze machen soll mit überprüfen und so
=> wenn ich das hab bin ich erstma nen großen schritt weiter

PS: Ich komm mir etwas an
[http://www.facebook.com/ext/share.php?sid=80471988789&h=or9O0&u=WsORt&ref=mfe
Harter Fall] erinnert vor, sorry.

hm also ich weis nich was das mit großen/harten/voluminösen/hoch-nidrig dichte besitzenden/klebenden haufen zu tun hat aber egal
monoffel
monoffel 16.05.2009 um 01:09:58 Uhr
Goto Top
Problem gelöst

Hab mich mal nen paar Stunden hingesezt und rumprobiert und es schliesslich geschafft ( auch wenn ich nich alles kapiere was ich geschrieben hab face-smile

Die Lösung:

set key1=HKLM\SOFTWARE\blabla\
reg query %key1% /v firstrun
if errorlevel 1 goto setup

FOR /F "tokens=2*" %%i in ('reg query %key1% /v bla^|find "REG_SZ"') do set speicherort=%%j  
FOR /F "tokens=2*" %%i in ('reg query %key1% /v password^|find "REG_SZ"') do set richtig=%%j  
if not exist %speicherort% md %speicherort%

-------%hier rest des programms%--------

:setup
title bla Setup & color 07 & mode con: lines=8 cols=60
reg add %key1% /v version /d 1.5.0.0 /f
cls
reg add %key1% /v firstrun /d 1 /f
cls
echo bla bla
set /p bla= 
cls
echo Wo soll bla gespeichert werden ?
echo Bsp.: C:\Geheim\Ordner1\
set /p speicherort=Ordnerpfad: 
reg add %key1% /v password /d %pw% /f
reg add %key1% /v bla /d %speicherort% /f
cls
echo Einstellungen:
echo Passwort: %pw%
echo Logfile Speicherort: %speicherort%
echo Einstellungen beibehalten ? (J/N) - Gross schreiben!
set /p save=
if %save%==J goto next
if not %save%==J goto setup
:next
reg add %key1% /v firstrun /d 0 /f
cls
echo Fertig! Taste drcken und Datei nochmal starten.
pause >nul

Von den Bla's nicht irritieren lassen is nur zensiert sozusagen
holzholer
holzholer 20.05.2009 um 18:04:52 Uhr
Goto Top
Hallo,

Zeile 31
if %save%==J goto next 

würde ich ersetzen mit
if /I %save%==J goto next 

siehe 'IF /?'
Die /I-Option wird angegeben, um die Groß-/Kleinschreibung beim Vergleich zu ignorieren.

In Zeile 32 solltest du dir eigentlich das IF sparen können, bzw einfach GOTO setup weil entweder die var ist J oder nicht. Andernfalls gibt es ja immernoch das ELSE.

Dies soll kein Klug###en sein (ich kann selber nur bruchstückhaft scripten), sondern einfach nur ein paar Tips für die Zukunft in der Hoffnung, dass es irgendwann leichter wird.

Grüßle,
holzholer
monoffel
monoffel 23.05.2009 um 13:13:10 Uhr
Goto Top
Danke holzholer ^^
Ich überlege irgendwie täglich was ich an meinem Programm verbessern kann (weil ich sonst nix zutun hab)
und inzwischen ähnelt das alte Programm dem neuen nur noch in ein paar einzelnen Befehlen.
Das mit der /I option hab ich auch schon rausgefunden, ebenfalls mit else.
Aber trotzdem vielen Dank ;)