ichweissnicht
Goto Top

Zeichenfolge in der Registry per .cmd-Script löschen?

Hallo

ich beschäftige mich erst seit kurzen mit dem schreiben von *.cmd bzw. *.bat-Dateien und finde das sie ein nützliches Werkzeug zum organisieren und verwalten eines PCs sind.
Ich habe ein kleines *.cmd-Script welches mir in der Windows-Registry (Windows XP SP 2) bestimmte Zeichenfolgen, nicht den Schlüssel, löschen soll. Wenn ich aber dieses Script starte, werden außer den Zeichenfolgen auch der dazugehörige Schlüssel gelöscht. Zur Änderung des Schlüssels benutze ich den Befehl reg delete.
Könnt ihr mir bitte helfen und einen Tip geben, wie man es hin bekommt das nur die bestimmten Zeichenfolgen und nicht der dazu gehörige Schlüssel gelöscht wird.

Vielen Dank für eure Hilfe

IchWeissNicht

Content-Key: 71527

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

Printed on: April 23, 2024 at 22:04 o'clock

Member: Connor1980
Connor1980 Oct 21, 2007 at 17:29:59 (UTC)
Goto Top
cmd öffnen: reg delete /?:
(gekürzt)
REG DELETE Schlüssel [/v Wert | /ve | /va] [/f]

REG DELETE \\ZODIAC\HKLM\Software\MyCo /v MTU
Löscht den Wert MTU unter MyCo auf ZODIAC.

in der Form funktioniert es....
Member: IchWeissNicht
IchWeissNicht Oct 23, 2007 at 13:28:56 (UTC)
Goto Top
Hi Connor1980,

vielen Dank für deine schnelle Antwort.
Habe deinen Tip ausprobiert und es hat gut funktioniert, solange es sich dabei um eine bestimmte Zeichenfolge (Wert) handelt.
Das Problem ist, dass die Zeichenfolgen fortlaufend sind und das sich nur der hintere Teil dabei unterscheidet.
Beispiel:

test1
test2
test3
test4
usw.

Nun möchte ich aber alle Zeichenfolgen (Werte) löschen, die mit test anfangen. Könntest Du mir einen Tip geben, wie man es hin bekommt das alle die Zeichenfolgen gelöscht werden die mit test anfangen und egal ist, ob dahinter eine 1 oder .... steht?

Vielen Dank
Member: Biber
Biber Oct 23, 2007 at 16:03:58 (UTC)
Goto Top
Moin IchWeissnicht,

ich hab mal eben am CMD-Prompt den schematischen Ablauf nachgeturnt, der auch bei Dir gegeben sein müsste.
Sieht so aus [Zeilen zum Eingeben beginnen mit dem Promptzeichen ">"]:
>set key=HKCU\Software\Demo
>for /L %i in (12, 1, 19) do @reg add %key% /v test%i /t REG_SZ /d "Wert für test%i"  
## ein paar Spielwerte definieren für "HKCU\Software\Demo" 
## und abfragen...
>reg query "%key%"  

! REG.EXE VERSION 3.0

HKEY_CURRENT_USER\Software\Demo
    test12      REG_SZ  Wert für test12
    test13      REG_SZ  Wert für test13
    test14      REG_SZ  Wert für test14
    test15      REG_SZ  Wert für test15
    test16      REG_SZ  Wert für test16
    test17      REG_SZ  Wert für test17
    test18      REG_SZ  Wert für test18
    test19      REG_SZ  Wert für test19

> for /f %i in ('reg query "%key%"^|find /i "test"') do @reg delete "%key% /v %i /f  
## nu is alles wieder wech, was mit "test" anfing unterhalb des Schlüssels 
>reg query "%key%"  

! REG.EXE VERSION 3.0

HKEY_CURRENT_USER\Software\Demo
##nur der Schlüssel selbst ist noch da
> reg delete "%key" /f  
## jetzt nicht mehr

Eine ähnliche Sequenz - also erst alle Werte auslesen und diese verwenden für eine "Reg Delete" Verarbeitung - kannst Du in einem Batch nachbauen.
Ändern musst Du nur dein %key% und jeweils zwei Prozentzeichen vo den Zählvariablen statt einer am CMD-Prompt.

Gruß
Biber