nornoks
Goto Top

Batch-Datei erstellen, die beim Booten Installationspfad ermittelt und Datei löscht

Hi!
Ich möchte eine Batch-Datei erstellen, die sich automatisch beim Booten öffnet, einen Installationspfad aus der Registry herausliest, überprüft ob in diesem Pfad eine bestimmte Datei vorhanden ist, und falls ja, sie dann löscht.
Ist dies möglich? Ich habe selber nicht viel Erfahrung auf dem Gebiet "Batch-Programmierung" und würde mich über jegliche Hilfe freuen.

Schöne Grüße,
Nornoks

Content-Key: 61534

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

Printed on: April 26, 2024 at 04:04 o'clock

Mitglied: 36539
36539 Jun 16, 2007 at 16:00:15 (UTC)
Goto Top
hallo,

entweder:
Batch in den Autostart, mit Inhalt: if exist "pfad zur gesuchten Datei" del "Pfad zur Datei"

wenn es direkt bei Booten passieren soll, also noch vor dem Autostart, muss die Batch in folgendes Verzeichnis gespeichert werden:

für WIN 2000: "C:\WINNT\system32\GroupPolicy\Machine\Scripts\Startup"
für WIN XP (nur XP Pro): "C:\WINDOWS\system32\GroupPolicy\Machine\Scripts\Startup"

gruß

@bastla
ist korrigiert - Danke für Aufpassen!
Immer hilfreich wenn man auf Spinat in den Zähnen aufmerksam gemacht wird face-wink
Member: Nornoks
Nornoks Jun 16, 2007 at 16:26:34 (UTC)
Goto Top
Danke, und wie lasse ich ihn den Pfad aus der Registry lesen?
Mitglied: 36539
36539 Jun 16, 2007 at 16:29:37 (UTC)
Goto Top
Danke, und wie lasse ich ihn den Pfad aus der Registry lesen?
wozu Registry?
Reicht es nicht, wenn Du weißt wo sie im WIN Explorer liegt (oder nicht liegt)?
Um was für eine Datei geht es denn?
Eine Installation kannst Du so jedenfalls nicht sauber löschen!

gruß
Member: bastla
bastla Jun 16, 2007 at 16:37:12 (UTC)
Goto Top
@36539

Dein "if /i" würde als "if exist" auch gut passen ...

Grüße
bastla

[Edit] Kommentar mittlerweile gegenstandslos ... [/Edit]
Member: Nornoks
Nornoks Jun 16, 2007 at 16:42:48 (UTC)
Goto Top
> Danke, und wie lasse ich ihn den Pfad
aus der Registry lesen?
wozu Registry?
Reicht es nicht, wenn Du weißt wo sie
im WIN Explorer liegt (oder nicht liegt)?
Um was für eine Datei geht es denn?
Eine Installation kannst Du so jedenfalls
nicht sauber löschen!

gruß

Ich möchte auch keine Installation löschen, sondern nur eine Datei der Installation.
Und da der Pfad variieren kann, wär's sehr praktisch, wenn ich den Pfad aus einer Registry rauslesen kann. Das müsste doch eigtl. gehen.
Mitglied: 36539
36539 Jun 16, 2007, updated at Oct 18, 2012 at 16:32:05 (UTC)
Goto Top
hallo,
dann schau dir mal die ersten 2 Beiträge hier drunter an ("Mögliche Antworten oder verwandte Beiträge") ob die dich weiter bringen.
Und lies auch Suche nach Nero-Installation schlägt fehl (Nimm dir Zeit) face-wink
Wenn nicht musst Du mal konkreter werden.

gruß
Member: Nornoks
Nornoks Jun 17, 2007, updated at Oct 18, 2012 at 16:32:05 (UTC)
Goto Top
hallo,
dann schau dir mal die ersten 2
Beiträge hier drunter an
("Mögliche Antworten oder verwandte
Beiträge") ob die dich weiter
bringen.
Und lies auch
Suche nach Nero-Installation schlägt fehl
(Nimm dir Zeit) face-wink
Wenn nicht musst Du mal konkreter werden.

gruß

Hey!
Also wie gesagt, ich habe sehr wenig Erfahrung auf dem Gebiet der Batch-Programmierung.
Was ich bisher weiß ist, dass ich mit diesen Befehlen ("if exist" und "del") überprüfen kann, ob eine gewisse Datei existiert und falls ja, sie dann löscht.


if exist ???Pfad???\repair.exe
del ???Pfad???\repair.exe


"???Pfad???" würde ich jetzt allerdings gerne aus einer Registry herauslesen.

In einem anderen Thread steht irgendetwas von:


for /f "tokens=2*" %%i in ('reg query "HKEY_LOCAL_MACHINE/SOFTWARE/Blizzard Entertainment/World of Warcraft" /v InstallDir') do set "Pfad=%%j"


Ich weiß allerdings nicht, in wie fern ich das für meine Batch gebrauchen kann, da der ehemalige Thread-ersteller etwas von "hineinschreiben in INI-Dateien" sagte.

Die Registry lautet:

[HKEY_LOCAL_MACHINE\SOFTWARE\Blizzard Entertainment\World of Warcraft]
"InstallPath"="D:\\Programme\\World of Warcraft\\"

Und den InstallPath würde ich gerne für "???Pfad???" einsetzen lassen.

Zum Schluß noch eine Frage:
Wie lautet der Befehl für "Umbenennen"?

Würde mich über jegliche Hilfe freuen..
Nornoks
Member: bastla
bastla Jun 17, 2007 at 13:13:10 (UTC)
Goto Top
Hallo Nornoks!

Auf Basis Deines Beispiels sollte das etwa so gehen:
@echo off & setlocal
for /f "tokens=2*" %%i in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Blizzard Entertainment\World of Warcraft" /v InstallPath') do set "Pfad=%%j"  
if exist "%Pfad%\repair.exe" @echo del "%Pfad%\repair.exe"  
Zum Testen: Solange in der letzten Zeile das "@echo" steht, wird der folgende Löschbefehl nur angezeigt , aber nicht ausgeführt. Der ev doppelte "\" vor "repair.exe" muss Dich nicht irritieren - die Datei wird auch so gefunden.

Falls der Registry-Wert nicht gefunden wird, erhältst Du entsprechend die Fehlermeldung "Fehler: Der angegebene Registrierungsschlüssel oder Wert konnte nicht gefunden werden." Diese Meldung kann unterdrückt werden, indem Du ersatzweise die folgende Zeile 2 verwendest:
for /f "tokens=2*" %%i in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Blizzard Entertainment\World of Warcraft" /v InstallPath <b>2^>nul</b>') do set "Pfad=%%j"  
Das Umbenennen von Dateien wird mit "ren" oder "rename" erledigt (Hilfe dazu mit "ren /?").

Grüße
bastla
Member: Nornoks
Nornoks Jun 17, 2007 at 13:59:44 (UTC)
Goto Top
Vielen Dank Bastla für die Antwort.
Allerdings funktioniert es nicht...
Meine Batch-Datei sieht so aus:

@echo off & setlocal
for /f "tokens=2*" %%i in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Blizzard Entertainment\World of Warcraft" /v InstallPath') do set "Pfad=%%j"
if exist "%Pfad%\repair.exe" del "%Pfad%\repair.exe"
if exist "%Pfad%\data\patch.mpq" ren "%Pfad%\data\windows.mpq"
if exist "%Pfad%\data\base.MPQ" del "%Pfad%\data\base.MPQ"
if exist "%Pfad%\data\dbc.MPQ" del "%Pfad%\data\dbc.MPQ"
if exist "%Pfad%\data\misc.MPQ" del "%Pfad%\data\misc.MPQ"
if exist "%Pfad%\data\terrain.MPQ" ren "%Pfad%\data\terrang.MPQ"

Weiß vielleicht jemand von euch, was ich falsch gemacht habe?

Schönen Gruß,
Nornoks
Member: bastla
bastla Jun 17, 2007 at 14:12:43 (UTC)
Goto Top
Hallo Nornoks!

Allerdings funktioniert es nicht...
... ist als Fehlerbeschreibung verbesserungswürdig.

Was nicht funktionieren kann, ist das Umbenennen - die entsprechenden Zeilen müssten etwa so aussehen: "ren AlterNameMitPfad NeuerNameOhnePfad" - daher:
if exist "%Pfad%\data\patch.mpq" ren "%Pfad%\data\patch.mpq" "windows.mpq"  

Sollte es andere Fehler geben, kannst Du diesen besser auf die Spur kommen, wenn Du in der ersten Zeile aus "echo off" ein "echo on" machst - so werden alle Befehle zunächst angezeigt und dann erst ausgeführt.

Grüße
bastla
Member: Nornoks
Nornoks Jun 17, 2007 at 14:46:43 (UTC)
Goto Top
Super!
Jetzt klappt alles. Vielen, vielen Dank für die Hilfe.

Schönen Gruß,
Nornoks