WinFuture-Forum.de: Batch: Checke, Ob Regwert Vorhanden - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Batch: Checke, Ob Regwert Vorhanden


#1 Mitglied ist offline   Hauner 

  • Gruppe: aktive Mitglieder
  • Beiträge: 2.297
  • Beigetreten: 03. Januar 05
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 17. September 2005 - 14:10

Hallo Community,

wenn ich checken möchte, ob eine Datei oder ein Ordner vorhanden ist, gebe ich if exist (..) beziehungsweise if not exist (..) ein, um je nach dem eine Aktion ausführen zu können, zum Beispiel:

if exist hallo.dat exit

Meine Frage: Wie kann ich überprüfen, ob ein Registry-Eintrag vorhanden ist, um danach entsprechende Funktionen aufrufen zu können?

PS: Folgendes funktioniert nicht:

for /f "tokens=2* delims=  " %%A in ('reg query "HKCU\Software\Bla" /v Blub 2^>NUL ^| find "Color"') do set Blub=%%B
if not defined Blub exit
Zeilenumbrüche und fehlende Leerzeichen nach delims sind nicht beabsichtigt.
0

Anzeige



#2 Mitglied ist offline   puppet 

  • Gruppe: aktive Mitglieder
  • Beiträge: 2.857
  • Beigetreten: 27. April 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Rudoltown

geschrieben 17. September 2005 - 14:24

Wieso soll das so nicht klappen?
Also bis auf das die Forensoftware wieder den Tab direkt hinter delims zertsört hat und du den Wert den du mit reg /v abfragst nicht mit find suchst, sollte es ohne Probleme klappen.

Bsp:

Zitat

for /f "tokens=2* delims=  " %%A in ('reg query "HKCU\Software\Bla" /v Wert 2^>NUL ^| find "Wert"') do set Blub=%%B


Rest siehe Anhang.

Angehängte Datei(en)

  • Angehängte Datei  hust.txt (249bytes)
    Anzahl der Downloads: 339

Dieser Beitrag wurde von puppet bearbeitet: 17. September 2005 - 14:25

0

#3 Mitglied ist offline   Hauner 

  • Gruppe: aktive Mitglieder
  • Beiträge: 2.297
  • Beigetreten: 03. Januar 05
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 17. September 2005 - 14:33

Nein, klappt, wie oben bereits gesagt, nicht. Ich habe am Anfang der Batch-Datei schon eine Abfrage mit for (nach dem gleichen RegWert). Funktioniert es vielleicht deswegen nicht?

Hab' die gesamte Datei mal hochgeladen. :)

Dieser Beitrag wurde von Hauner bearbeitet: 17. September 2005 - 14:36

0

#4 Mitglied ist offline   puppet 

  • Gruppe: aktive Mitglieder
  • Beiträge: 2.857
  • Beigetreten: 27. April 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Rudoltown

geschrieben 17. September 2005 - 14:55

Zitat

if not defined Color set Color=F8

for /f "tokens=2* delims=  " %%A in ('reg query "HKCU\Software\OPA-Backup" /v Color 2^>NUL ^| find "Color"') do set Color=%%B

color %Color%
Das ist relativ sinnlos, und zwar setzt du den Wert, wenn der Wert in der Registry gefunden wird ist soweit alles ok, aber wenn der Wert nicht gefunden wird, wird set color= ausgeführt (weil %B ja leer ist) was den Wert löscht, du solltest also dein if not defined Color set Color=F8 hinter die FOR-Anweisung schreiben.
Das setlocal in Zeile 50 sowie das endlocal in Zeile 53 solltest du auch anpassen (wieso hast du die Abfragen dazwischen eigentlich zwei mal drinne?).

Ansonsten funktioniert dies

Zitat

for /f "tokens=2* delims=  " %%A in ('reg query "HKCU\Software\OPA-Backup" /v Color 2^>NUL ^| find "Color"') do set Color=%%B

if not defined Color echo %date%, %time%: Deinstallations-Konsole: Etwaige Registrierungsdatenbank-Einträge gelöscht.
wunderbar (wenn der Wert nicht vorhanden ist (also gelöscht wurde) kommt die Meldung "Deinstallations-Konsole blabla", wenn der Wert vorhanden ist kommt die Meldung nicht).
Falls der Wert aber color und nicht Color heißt solltest du hinter das find noch /i setzten damit es nicht zwischen Groß- und Kleinschreibung unterscheidet.
0

#5 Mitglied ist offline   Hauner 

  • Gruppe: aktive Mitglieder
  • Beiträge: 2.297
  • Beigetreten: 03. Januar 05
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 17. September 2005 - 16:36

1. Jap, geändert.
2. Nein, eben leider nicht. Ich habe die versehentlich eingebaute, zweite Anweisung herausgenommen und den if not defined-Befehl am Anfang der Batch-Datei unter for gesetzt. Außerdem steht nun hinter find der I-Parameter.
Was meinst du mit "setlocal und endlocal anpassen"?
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0