![]() |
Registryeintrag mit Batch-Skript löschen
Ich will mit einem Batch-Skript einen Registryeintrag löschen. mit dem Kommandozeilen Programm regy kein Problem soweit. Jetzt will ich aber auch folgendes:
Beispiel:
Code:
Es soll Schlüssel x gelöscht werden und wenn der Schlüssel MichaelPuff[i] leer ist, soll auch dieser gelöscht werden. Wie kann ich abfragen, ob dieser Schlüssel leer ist? Und wie müsste dann das Batch-Skript aussehen?
HKCU
Software MichaelPuff x y z So funktioniert es nicht:
Code:
errorlevel ist auch 0 (erfolgreich), wenn der Schlüssel leer ist.
@echo off
reg query HKCU\Software\z /s if errorlevel == 0 goto :EMPTY if errorlevel == 1 goto :NOTEMPTY echo errorlevel :EMPTY ECHO "Schlussel z ist leer" goto END :NOTEMPTY ECHO "Schluessel z ist NICHT leer" goto END :END pause |
Re: Registryeintrag mit Batch-Skript löschen
Ich kenne das Programm regy nicht, gibt es überhaupt ein Errorlevel zurück ?
Warum möchtest du dies nicht über eine eigene Delphianwendung erledigen, ist doch einfach zu machen. |
Re: Registryeintrag mit Batch-Skript löschen
Ja
regy = registry programm heißt reg, oder reg.exe gib mal in deiner Konsole reg ein ... da kommen dann die möglichen Befehle zum Vorschein vermutlich etwa so?
Code:
reg delete "HKCU\Software\MichaelPuff\x" /f
reg query "HKCU\Software\MichaelPuff" if errorlevel == 0 goto noDelete reg delete "HKCU\Software\MichaelPuff" /f :noDelete Zitat:
Also vorher kannte ich diese Methode auch nicht. Hab das Löschen bisher über eine .reg-Datei gelöst und hab schon immer nach so'ner kleinen Möglichkeit gesucht auch derartige Abfragen durchführen zu können. [add] halt ... mußte man nicht erst die größeren errorlevel abfragen und dann die kleineren? *mal teste* |
Re: Registryeintrag mit Batch-Skript löschen
Weil ich eigentlich dachte, es wäre mit einem BatchSkript einfacher und wollte mir nicht moch extra einen "Uninstaller" schreiben. Da es mit VBSkript auch nicht so schön geht, werde ich mir wohl doch einen kleinen allgemein gültigen Uninstaller schreiben, dem man nur noch das Programm als Parameter übergibt, so dass ich nicht für jedes Programm einen eigenen Uninstaller schreiben muss.
@himitsu: Auch wenn es keine Unterschlüssel gibt, ist der errorlevel leider 0, wenn ich das richtig in Erinnerung habe. Ich werde deinen Code noch mal ausprobieren.
Code:
Schlüssel X wird gelöscht, aber Schlüssel z nicht, obwohl er leer ist.
reg delete "HKCU\Software\z\x" /f
reg query "HKCU\Software\z" if errorlevel == 0 goto noDelete reg delete "HKCU\Software\z" /f :noDelete pause |
Re: Registryeintrag mit Batch-Skript löschen
Liste der Anhänge anzeigen (Anzahl: 1)
der errorlevel ist wohl anders zu verstehen.
nicht 0 = etwas vorhanden 1 = leer sondern 0 = befehl erfolgreich ausgeführt 1 = fehler du kannst höchstens prüfen ob ein schlüßel/wert existiert
Code:
oder besser ausgedrückt:
reg query "HKCU\Software\MichaelPuff"
if errorlevel == 1 ... schlüssel exisiert nicht Fehler: konnte nicht reinsehn, da nicht existiert Anhang: erstellt "HKCU\Software\MichaelPuff1" "HKCU\Software\MichaelPuff1" > test="123xyz" "HKCU\Software\MichaelPuff2" prüft und löscht die einträge wieder |
Re: Registryeintrag mit Batch-Skript löschen
Zitat:
|
Re: Registryeintrag mit Batch-Skript löschen
Funktioniert in jedem Windows:
Code:
Ich weiß nicht seit wann SET die Option /P kennt (NT, 2000, oder XP), aber damit wäre 'ne Ja/Nein-Frage möglich:
@ECHO off
REG delete "HKCU\Software\MichaelPuff\x" /f IF ERRORLEVEL 1 GOTO 1 ECHO HKEY_CURRENT_USER\Software\MichaelPuff\x erfolgreich gelöscht GOTO 2 :1 ECHO HKEY_CURRENT_USER\Software\MichaelPuff\x konnte nicht gelöscht werden :2 ECHO. ECHO. ECHO Es sind noch vollgende Einträge vorhanden: REG query "HKCU\Software\MichaelPuff" /s ECHO *end* ECHO. ECHO Sollen diese ebenfalls gelöscht werden? (samt HKEY_CURRENT_USER\Software\MichaelPuff) ECHO. ECHO Wenn nicht, dann drücken sie Strg+C zum abbrechen, ECHO oder schließen einfach nur dieses Fenster [X]. ECHO. PAUSE REG delete "HKCU\Software\MichaelPuff" /f
Code:
[edit]
@ECHO off
REG delete "HKCU\Software\MichaelPuff\x" /f IF ERRORLEVEL 1 GOTO 1 ECHO HKEY_CURRENT_USER\Software\MichaelPuff\x erfolgreich gelöscht GOTO 2 :1 ECHO HKEY_CURRENT_USER\Software\MichaelPuff\x konnte nicht gelöscht werden :2 ECHO. ECHO. ECHO Es sind noch vollgende Einträge vorhanden: REG query "HKCU\Software\MichaelPuff" /s ECHO *end* ECHO. ECHO Sollen diese ebenfalls gelöscht werden? (samt HKEY_CURRENT_USER\Software\MichaelPuff) ECHO. SET /p eingabe=j/n: IF *%eingabe% == *j GOTO 3 GOTO 4 :3 REG delete "HKCU\Software\MichaelPuff" /f :4 deutscher Text und Yes/No-Abfrage :stupid: |
Re: Registryeintrag mit Batch-Skript löschen
Dann muss der Benutzer wieder denken und wie jedr weiß hat es damit nicht jeder Benutzer so. :mrgreen: Ich werde mir dann wohl mal inen kleinen Uninstallerschreiben.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz