Batch um Regestry Einträge zu finden und zu löschen

Mitglied: zeroblue2005

zeroblue2005 (Level 2) - Jetzt verbinden

11.04.2016 um 08:55 Uhr, 928 Aufrufe, 15 Kommentare

Hallo Zusammen,

ich suche eine Möglichkeit einen Standardwert in der Regestry zu finden und dann diese alle zu löschen ohne Rückfrage?

Mit *.* habe ich es schon versucht, hat jemand eine Idee?

Danke
Mitglied: 114757
114757 (Level 4)
11.04.2016, aktualisiert um 09:11 Uhr
Moin,
überhaupt schon mal die Doku gelesen ??? Da steht es schwarz auf weiß ...
http://ss64.com/nt/reg.html

Gruß jodel32
Bitte warten ..
Mitglied: zeroblue2005
11.04.2016, aktualisiert um 09:30 Uhr
Wenn ich die verstehen würde, dann würde ich nicht fragen oder? Ich habe eine einfache Frage gestellt und kann auf deine Belehrung verzichten, Antworte oder lasse es bitte bleiben, Danke!
Bitte warten ..
Mitglied: Mahagon
11.04.2016 um 09:33 Uhr
Du solltest es dir auf jeden Fall anschauen.
Skripte zu starten die man nicht versteht kann fatale Folgen haben ;)

Weiß auch nicht ob das sinnvoll ist das automatisch zu machen?
Wäre da sehr vorsichtig..

Was möchtest du denn erreichen?
Vielleicht gibt es ja einen "sicheren" Weg
Bitte warten ..
Mitglied: zeroblue2005
11.04.2016 um 09:50 Uhr
Das meiste was ich weiß von Scripten verstehe ich aus fertigen Batch oder scripten! Ich habe immer Probleme mit den Syntax! Meist kann ich dann daraus und der Hilfe davon ableiten und verstehe es dann.

Ich versuche immer erst mich durchzubeißen und diese Sätze haste mal in... geschaut, finde ich hochgradig und bin es leid mich dafür zu rechtfertigen!

Ich habe das hier als Batch gebastelt:

for /f "delims=" %i in ('reg query HKEY_CLASSES_ROOT|findstr /i C:\Program Files\Test\test.ocx') do echo %%i
pause

Wobei ich hier nicht genau weiß, ist das eine *.reg oder eine *.bat

als *.bat reagiert er nicht auf meine Pause

und als *.reg

reg.exe for /f "delims=" %i in ('reg query HKEY_CLASSES_ROOT|findstr /i C:\Program Files\test\test.OCX') do echo %%i

Kommt er mit der for nicht klar! For kenne ich auch nur als batch CMD. Wenn ich den Script richtig interpretiere, dann sucht er doch nur den Standardwert oder da fehlt mir dann das löschen noch..
Bitte warten ..
Mitglied: zeroblue2005
11.04.2016 um 09:53 Uhr
Auf deine Frage, warum das Ganze!

ich habe eine OCX Datei die Access braucht, die habe ich jetzt tausendfach in der Reg drin (Testsystem) und muss da mal sauber machen, sprich den Verweis auf die Datei aus dem ganzen System löschen!
Bitte warten ..
Mitglied: altmetaller
11.04.2016 um 10:05 Uhr
Zitat von @zeroblue2005:

for /f "delims=" %i in ('reg query HKEY_CLASSES_ROOT|findstr /i C:\Program Files\Test\test.ocx') do echo %%i
pause

Wobei ich hier nicht genau weiß, ist das eine *.reg oder eine *.bat

Das ist eine .bat Datei.

Die durchsucht HKEC_CLASSES_ROOT nach der Zeichenkette test.ocx, gibt die jeweilige Zeile aus und wartet dann auf einen Tastendruck.

und als *.reg

Sei froh, wenn das keine Aktion ausgelöst hat. Wenn Windows das wirklich als .reg interpretiert hätte, wäre das Betriebssystem jetzt irreparabel zerstört. Aber glücklicherweise hast Du ja eine Fehlermeldung bekommen :-) face-smile
Bitte warten ..
Mitglied: 114757
114757 (Level 4)
11.04.2016, aktualisiert um 10:13 Uhr
Sucht nach deinem String in den Default Werten und macht den jeweiligen (Default) Wert dann leer. Oder willst du stattdessen den ganzen Schlüssel löschen ?
Bitte warten ..
Mitglied: zeroblue2005
11.04.2016 um 10:18 Uhr
He Jodel32,

das sieht aber gut aus :-) face-smile Ich würde sagen besser löschen oder, sonst ist das soviel Müll drin oder was meinst du?
Bitte warten ..
Mitglied: Biber
11.04.2016 um 10:19 Uhr
Moin FA-jka,


Zitat von @altmetaller:

Zitat von @zeroblue2005:

for /f "delims=" %i in ('reg query HKEY_CLASSES_ROOT|findstr /i C:\Program Files\Test\test.ocx') do echo %%i
pause

Das ist eine .bat Datei.

Die durchsucht HKEC_CLASSES_ROOT nach der Zeichenkette test.ocx, gibt die jeweilige Zeile aus und wartet dann auf einen Tastendruck.

Ergänzend dazu:
Da würde diese Zeile in einem Batch tun, wenn
- immer zwei %-Zeichen vor der Laufvariable i stünden (aber vorne ist nur eines)
- das Pipe-Zeichen | mit einem Caret maskiert ware also "^|"
- der Parameter Zeichenkette-mit-Leerzeichen in Anführungszeichen gefasst werden würde (also "C:\Program Files\Test\.." }
- und der Findstr-Parameter statt nur /i geändert werden würde auf Findstr/ic: "C:\Program Files\Test\bla"

Dann liesse sich wenigstens ein Zwischenergebnis sehen.

Grüße
Biber
Bitte warten ..
Mitglied: 114757
114757 (Level 4)
LÖSUNG 11.04.2016, aktualisiert um 10:24 Uhr
Zitat von @zeroblue2005:
das sieht aber gut aus :-) face-smile Ich würde sagen besser löschen oder, sonst ist das soviel Müll drin oder was meinst du?
Wenn du hinterher mit einem System da stehen willst das vermutlich vollkommen durcheinander geraten ist, gerne. Ich würde das nicht machen sondern ein Backup vor dem Stand des "Verhunzens" zurückspielen, oder jeden Eintrag manuell prüfen.

Aber bitte, wenn du unbedingt den ganzen Schlüssel löschen willst, probiers aus "auf eigene Gefahr"...

Bitte warten ..
Mitglied: altmetaller
11.04.2016 um 10:26 Uhr
Zitat von @Biber:

- der Parameter Zeichenkette-mit-Leerzeichen in Anführungszeichen gefasst werden würde

Ich lerne ja auch gerne dazu :-) face-smile

Bei dem vorgenannten Punkt hätte ich jetzt aber eigentlich gedacht, dass das Leerzeichen durch das "delims=" nicht mehr als solches betrachtet wird. Normalerweise setzt Du die Default-Interpretation des Leerzeichens doch damit außer Kraft, oder?
Bitte warten ..
Mitglied: Biber
LÖSUNG 11.04.2016, aktualisiert um 11:23 Uhr
Moin FA-jka,

die "delims=" beziehen sich ja auf die Ausgabeparameter der Anweisung, die in der FOR/F-Anweisung ausgeführt wird.
Der Parameter Zeichenkette-mit-Leerzeichen ist aber der Eingabeparameter von FinsStr.

Sonst hättest du recht.

Und der zusätzlich Kinken mit dem fehlenden Parameter "/C:" bei FindStr...

Ich machs mal als Demo am CMD-Prompt OHNE den Parameter "/ic:", also nur mit Parameter /i:
Ohne Parameter /C: werden alle "Worte" im String "C:\Program Files" gesucht.
Alle Fundstellen in diesem Fall sind Fundstellen des klein oder gross geschriebenen Wortes "Files".
Das war nicht der Plan des TO... ein sinngemäßes "del *.*" wäre wahrscheinlich auch nicht sein Wunsch.

Grüße
Biber
Bitte warten ..
Mitglied: zeroblue2005
11.04.2016 um 11:15 Uhr
Hi Jodel,

kann und darf ich die Zeile Erweitern um *.*

Grund ist, dass es auch noch Einträge gibt, wo hinter dem:

set "searchstring=C:\Program Files\test\test.OCX, 10" <<< ein Komma mit Zahl kommt?

Oder anders gefragt, wenn ich C:\Program Files\test\ eingebe, wird dann alles gelöscht was diese Wert und alles was dahinter steht gelöscht?
Bitte warten ..
Mitglied: 114757
114757 (Level 4)
LÖSUNG 11.04.2016, aktualisiert um 11:22 Uhr
Zitat von @zeroblue2005:
Oder anders gefragt, wenn ich C:\Program Files\test\ eingebe, wird dann alles gelöscht was diese Wert und alles was dahinter steht gelöscht?
Dafür musst du den Vergleichsoperator in Zeile 4 von -eq in -like ändern, dann kannst du Wildcards (? / *) in deinem Suchstring verwenden. Man kann auch mit Regular-Expressions arbeiten, dann wäre es der Operator -match.
Alle Möglichkeiten zu den Vergleichsoperatoren kannst du hier nachlesen.
Bitte warten ..
Mitglied: zeroblue2005
11.04.2016 um 11:39 Uhr
Saubere Sache Jodel,

hat geklappt! Vielen lieben Dank! Für alle die sich das später mal hier durchlesen:

JODEL hat mehr als Recht , das mit den Hart Löschen kann mehr als in die Hose gehen! Bei mir war das jetzt nicht Kritisch zu betrachten, weil es nur um einen Verweiß für eine Access Anwendung handelte, wo der Verweis zu 100% nur von dieser Access Anwendung benötigt wird! Jedoch auch ich habe das erst auf einem Testsystem geprüft, wo es egal war ob das Ding hoch geht oder eben nicht!

Danke an alle für die Hilfe...

PS:Alleine hätte ich da Wochen dran gesessen! ;-) face-wink
Bitte warten ..
Heiß diskutierte Inhalte
Off Topic
Realistische Gehaltsvorstellung für eine "IT-Allroundkraft"
gelöst JiggyLeeVor 1 TagFrageOff Topic19 Kommentare

Hallo an alle, ich hege momentan den Wunsch mich von der alten verstaubten Behörden Bürokratie und langweiliger Aufgaben los zu lösen und in einem ...

Windows 10
Windows 10 Geschwindigkeitprobleme trotz viel mehr Gb Ram
Matthes88Vor 1 TagFrageWindows 1045 Kommentare

Hallo ihr lieben aaaalso : Da mein neuer Arbeitsspeicher (32gb) von meiner alten Windows 7 version (max mit 8gb kompatibel) nicht angenommen wurde, habe ...

Humor (lol)
Tipp: Dinge, die man besser nicht klaut
altmetallerVor 1 TagTippHumor (lol)12 Kommentare

Hallo, so wurde meiner Hündin z.B. heute der (eingeschaltete) GPS-Tracker mit Mobilfunkanbindung quasi "direkt vom Halsband weggefunden". Akku hatte noch 60% :-P Und ich ...

Windows Server
GPU Passthrough HYPER-V 2019
bintesVor 1 TagFrageWindows Server8 Kommentare

Hallo, ich habe ein ein Problem mit der Bereitstellung einer Grafikkarte an eine virtuelle Maschine. Hardware: - HPE ProLiant DL380 Gen9 V4 Rack Server ...

Video & Streaming
Videoaufnahme funktioniert nur bis zum ersten Reboot (0x80040217)
IllusionFACTORYVor 1 TagFrageVideo & Streaming11 Kommentare

Ich nehme über eine Video-Software von einem USB-Hardware-Encoder Video auf. Das funktioniert exakt bis zum ersten Reboot - danach bekomme ich beim Starten der ...

Windows Server
Windows Admin Center DC
maximidVor 1 TagFrageWindows Server3 Kommentare

Hallo, ich hätte mal eine Frage zu Windows Admin Center und zwar schaue ich es mir aktuell etwas an da mir die zentrale Verwaltung ...

Grafikkarten & Monitore
Monitorhalterung mit 80cm Armlänge
ben1300Vor 1 TagFrageGrafikkarten & Monitore7 Kommentare

Guten Abend ! ich bin auf der Suche nach einer Monitorhalterung, im besten Fall ohne Bohrung für einen 28" Monitor (Vesa Halterung). Nun kommt ...

SAN, NAS, DAS
Synology DS213j - Volume nach HDD Austausch vergrößern
gelöst JasperBeardleyVor 1 TagFrageSAN, NAS, DAS4 Kommentare

Moin, ich hab meinem NAS zwei neue 8TB spendiert, da die 3TB Platten jetzt 6 Jahre alt sind. Da die beiden Platten im JBOD ...