michi90
Goto Top

reg query probleme zeichenfolge wert auslesen

per "reg query " den wert einer zeichenfolge auslesen ...

Hallo,
bin neu hier und hab eine frage, hab auch schon das forum einwenig durch geblättert aber keine antwort gefunden...

Unzwar möchte ich einen Wert aus einer zeichenfolge auslesen. Krieg das iwie nicht hin face-sad

So hatte ich mir das gedacht, aber funktioniert nicht...
#######################
@echo off

reg query HKEY_LOCAL_MACHINE\software\Test\Test2 /v path /s C:\test
if not errorlevel 1 goto exist



:error
echo regkey fehlerhaft
pause
exit

:exist
echo regkey vorhanden
pause
exit
#######################
Ich möchte den Wert "C:\test" auslesen, wenn dieser vorhanden ist dann soll er halt zu "exist" springen, wenn nicht dann halt zu "error".


Würde mich über jede hilfe freuen..

Michi

Content-Key: 108276

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

Printed on: April 19, 2024 at 18:04 o'clock

Mitglied: 60730
60730 Feb 06, 2009 at 13:46:32 (UTC)
Goto Top
Zitat von @Michi90:
Hallo,
Servus zurück.

bin neu hier und hab eine frage, hab auch schon das forum einwenig
durch geblättert aber keine antwort gefunden...

face-wink Endlich mal wieder jemand, mit guter Kinderstube face-wink

Unzwar möchte ich einen Wert aus einer zeichenfolge auslesen.
Krieg das iwie nicht hin face-sad

So hatte ich mir das gedacht, aber funktioniert nicht...
..dann mach es z.B so herum:
rem @echo off - zum testen
reg query HKLM\software\Test\Test2 /v path |find "C:\test"  
if errorlevel 0 goto exist

:error
echo regkey fehlerhaft
pause
exit
 
:exist
echo regkey vorhanden
pause

edit
wobei es "so" natürlich eleganter wäre
rem @echo off - zum testen
reg query HKLM\software\Test\Test2
if errorlevel 0 goto exist

:error
echo regkey fehlerhaft
pause
exit
 
:exist
echo regkey vorhanden
@reg query HKLM\software\Test\Test2 /v path |find "C:\test"  
@if errorlevel 0 echo und hat auch den richtigen Inhalt
pause
/edit

Gruß
Member: Michi90
Michi90 Feb 06, 2009 at 14:48:36 (UTC)
Goto Top
Hey,
Großes danke erstmal
aber das funktioniert nicht wirklich...
wenn ich jetzt in meiner regestrie schreiben z.b.:
C:\test8
würde er mir trotzdem sagen " und hat den richtigen Inhalt " obwohl der ja nicht "test" sondern "test8" heißt.

oder kann man das auich vll mit "if exist reg" oder irgend wie sowas machen ??
Bin für andere Ideen gern offen face-smile
Mitglied: 60730
60730 Feb 06, 2009 at 14:56:07 (UTC)
Goto Top
Zitat von @Michi90:
Hey,
Großes danke erstmal
aber das funktioniert nicht wirklich...
wenn ich jetzt in meiner regestrie schreiben z.b.:
C:\test8
würde er mir trotzdem sagen " und hat den richtigen Inhalt
" obwohl der ja nicht "test" sondern "test8" heißt.

Dann erweiter das um ein "\" in Zeile 12.
rem @echo off - zum testen
reg query HKLM\software\Test\Test2
if errorlevel 0 goto exist

:error
echo regkey fehlerhaft
pause
exit
 
:exist
echo regkey vorhanden
@reg query HKLM\software\Test\Test2 /v path |find "C:\test\"  
@if errorlevel 0 echo und hat auch den richtigen Inhalt
pause

..obwohl dann wieder alle unterordner von "c:\test" auch gefunden würden.

Aber ich denke, du machst dir da Gedanken, die du nicht wirklich brauchst.
HLKM das liegt doch in Admin Hand face-wink

Und wenn es wirklich "so" wichtig sein sollte - mach das ganze einmalig mit einem System, das Garantiert deinen Wert hat.
@reg query HKLM\software\Test\Test2 /v path >\\server\freigabe\pfad_richtig.ini
und dann ins Script rein:
@reg query HKLM\software\Test\Test2 /v path >%temp%\regkey.tmp
@FC %temp%\regkey.tmp \\server\freigabe\pfad_richtig.ini
@if %errorlevel%==0 echo Einmal regkey mit alles komplett und RISCHDISCH

Gruß
Mitglied: 60730
60730 Feb 06, 2009 at 15:18:22 (UTC)
Goto Top
Zitat von @Michi90:
Hey
nochmal wegen dem wert aus der reg. auslesen ..

also ich glaub du hast mich da bisschen falsch verstanden....
das "C:\test\ ist ein wert in einer zeichenfolge bei der win reg.
Ja - dachte ich mir face-wink

und mein programm soll nur weiter laufen wenn in dieser zeichenfolge steht z.b. "c:\test"
sobald da iwas anderes steht oder erst garnicht vorhanden ist soll das programm abbrechen...

weißt wie ?
Ich weiß alles face-wink

Und genau das macht es ja - aber da da nichts ist, wohin es weiterlaufen soll, macht es das auch nicht face-wink

Hast du denn wirklich mal probiert, was ich geschrieben habe?
Ich habe fast genau das gleiche vorher durchexerziert, jedoch mit einem anderen Schlüssel und das ist bei mir gelaufen.

Gruß


edit:
naja - ich mach sowas mit einer anderen Software, die VBS ähnlich ist - was daran nun kompliziert ist?
/edit
Member: Michi90
Michi90 Feb 06, 2009 at 15:19:15 (UTC)
Goto Top
ja ok .. aber geht das nicht ? mit einer einfachen abfrage wenn der wert ... ist dann goto bla wenn nich goto exit sowas ungefähr ?
Mitglied: 60730
60730 Feb 06, 2009 at 15:23:55 (UTC)
Goto Top
? bisschen zu kompliziert?

weniger ist mehr - aber in dem Fall auch unsensibler.
2-3 Zeiler:

reg query HKLM\software\Test\Test2 /v path |find "C:\test\"  
if not errorlevel 0 goto end
echo und hier wäre dann der fehlende Teil
:end


..und das "mag" ich nicht, denn wenn es unter W2k läuft, wird reg.exe nicht gefunden, ergo auch Errorlevel <>0, obwohl evtl. der Key vorhanden wäre.

Ich habs da lieber eindeutiger, aber funktionieren tutet es.

gruß
Member: Michi90
Michi90 Feb 06, 2009 at 15:25:44 (UTC)
Goto Top
also wenn das letzte ausprobiere, dann kann ich den wert aus der reg. ändern und er würde mir immernoch sagen das das programm funktioniert....


aber ich glaub ich werd wohl die andere Methode mit den vergleichen "FC" von dir nehmen...

achso wenn er mir was in einer text datei kopier (>C:\test.txt) dann gibt er mit immer noch die versions nummer an ... kann man das auch unterdrücken ? bestimmt wa ;) face-smile
Mitglied: 60730
60730 Feb 06, 2009 at 16:17:32 (UTC)
Goto Top
Nochmal ganz langsam....

Mal als Beispiel einen Wert, den jeder auf einem deutschen System nachvollziehen kann....

reg query HKLM\software\Microsoft\Windows\CurrentVersion /v ProgramFilesDir |find /i "C:\programme"  
if %errorlevel%==0 Echo naja war ja klar.
reg query HKLM\software\Microsoft\Windows\CurrentVersion /v ProgramFilesDir |find /i "x:\programme"  
if %errorlevel%==1 Echo naja war ja auch klar.


gruß
Member: Michi90
Michi90 Feb 06, 2009 at 16:59:47 (UTC)
Goto Top
mh ok so ganz klappt das iwie noch nicht...
aber ich hab das so gemacht wie oben mit vergleich von 2 daten "FC" das klappt bestens.
aber kannst du mir vll noch sagen wie man das ausschaltet das er nicht die cmd version mit kopiert ?
Mitglied: 60730
60730 Feb 06, 2009 at 17:33:39 (UTC)
Goto Top
Servus,

"FC" war nur ein Schnellschuss - mit Reg Compare geht es aber auch.
Ps: Es wird nicht die version von cmd mitgeschrieben, sondern die Version von reg.exe

Und nein - ich hab jetzt "frei" und damit auch MS frei - mein Mac kennt die Befehle nicht face-wink

Gruß

Reg "befehl" /?
Member: Michi90
Michi90 Feb 06, 2009 at 17:48:13 (UTC)
Goto Top
alles klar...
Dank dir face-smile