Batch - Suche und Löschen
Moin,
Hab volgende Aufgabe bekommen.
Ich soll eine Batch datei erstellen die alle Verzeichnisse der Festplatte (nach einer bestimmten Datei) durchsucht die aber vorher nicht bekannt sind (Batch muss selbst alle Verzeichnisse erkennen). Wenn dann diese Datei existiert soll sie gelöscht werden. Die Dateien können auch in mehreren verzeichnissen liegen.
Das überprüfen könnte man ja mit IF EXIST realiesieren aber der rest?
Würde mich echt freuen wenn ihr mir da helfen könntet
Danke & MfG
Hab volgende Aufgabe bekommen.
Ich soll eine Batch datei erstellen die alle Verzeichnisse der Festplatte (nach einer bestimmten Datei) durchsucht die aber vorher nicht bekannt sind (Batch muss selbst alle Verzeichnisse erkennen). Wenn dann diese Datei existiert soll sie gelöscht werden. Die Dateien können auch in mehreren verzeichnissen liegen.
Das überprüfen könnte man ja mit IF EXIST realiesieren aber der rest?
Würde mich echt freuen wenn ihr mir da helfen könntet
Danke & MfG
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 50069
Url: https://administrator.de/contentid/50069
Ausgedruckt am: 22.11.2024 um 04:11 Uhr
8 Kommentare
Neuester Kommentar
Hallo HackerX!
Versuch mal (als Batch-Datei "Loesche.bat" speichern)
Mit dem @echo drinnen wird nicht wirklich gelöscht, sondern es erfolgt nur eine Anzeige. Aufgerufen wird die Batch-Datei zB so:
Durch das /s wird auch in allen Unterverzeichnissen von D: gesucht und jedes Vorkommen der Datei "Test.txt" gelöscht.
Grüße
bastla
Versuch mal (als Batch-Datei "Loesche.bat" speichern)
for /f "delims=" %%i in ('dir /s /b %1') do @echo del "%%i"
Loesche D:\Test.txt
Grüße
bastla
Moin HackerX,
Beispiel mit der sehr beliebten "desktop.ini" (vom CMD-Prompt):
Als Batch mit Parameter "Such-Dateiname":
Das GROSS geschriebene ECHO zum Scharf-Machen entfernen.
Im Falle der Batchdatei beachten: Parameter "Such-Dateiname" kann auch den Start-Pfad beinhalten.
HauWechAlle index.dat ---------> löscht alle index.dat angefangen vom aktuellen Verzeichnis.
HauWechAlle \index.dat ---------> löscht alle index.dat angefangen vom aktuellen Laufwerk\Verzeichnis Root.
HauWechAlle d:\temp\index.dat F:\Firlefanz.exe ---------> löscht alle index.dat unterhalb D:\temp und alle Firlefanz.exe vom F: Laufwerk\Verzeichnis Root.
HTH
Biber
Beispiel mit der sehr beliebten "desktop.ini" (vom CMD-Prompt):
>for /f "delims=" %i in ('dir /b /a-hh /s "\desktop.ini"') do @ECHO del "%i"
Als Batch mit Parameter "Such-Dateiname":
::------------snipp HauWechAlle.bat
@for /f "delims=" %%i in ('dir /b /a-hh /s %*') do @ECHO @del "%%i"
Das GROSS geschriebene ECHO zum Scharf-Machen entfernen.
Im Falle der Batchdatei beachten: Parameter "Such-Dateiname" kann auch den Start-Pfad beinhalten.
HauWechAlle index.dat ---------> löscht alle index.dat angefangen vom aktuellen Verzeichnis.
HauWechAlle \index.dat ---------> löscht alle index.dat angefangen vom aktuellen Laufwerk\Verzeichnis Root.
HauWechAlle d:\temp\index.dat F:\Firlefanz.exe ---------> löscht alle index.dat unterhalb D:\temp und alle Firlefanz.exe vom F: Laufwerk\Verzeichnis Root.
HTH
Biber
ausgeben möchte in welchem Pfad ich die gerade gelöschte datei gefunden hab
dann::ENTF
echo %~dp1
Wenn ich feste Dateinamen hab setz ich die einfach statt %%i ein oder und wie kann ich schon in der Batch den startpfad festlegen?
Wie im Beispiel oben (gerade auch voni Biber) gezeigt, kannst Du den Dateinamen samt Laufwerk bzw auch mit Pfad dazwischen verwenden (dann wird nur in und unterhalb dieses Pfades gesucht), also beim Aufruf oder statt %1 eintragen: D:\ADM\Test.txtDas %%i enthält übrigens nacheinander die gefundenen Dateien (samt Pfad).
Grüße
bastla
@Biber
Musstest Du das schon wieder so vorbildlich machen?
Moin HacherX,
Frage a)
Frage b)
fester Startpfad:
Gruß
Biber
[Edit]
@bastla
[/Edit]
Frage a)
@echo off
for /f "delims=" %%i in ('dir /s /b %1') do @call:ENF "%%i"
goto :eof
:ENF Parameter 1: Qualifizierender Dateiname in Anführungszeichen
echo Datei %~nx1 gefunden in %~dp1
ECHO del "%1"
goto :eof
Frage b)
fester Startpfad:
for /f "delims=" %%i in ('dir /s /b d:\temp\%1') do @call:ENF "%%i"
fester Startpfad und Dateiname:for /f "delims=" %%i in ('dir /s /b d:\temp\blablubb.txt') do @call:ENF "%%i"
Gruß
Biber
[Edit]
@bastla
Musstest Du das schon wieder so vorbildlich machen?
Musstest Du es wieder so schnell machen? Da kommen ältere Leute wie ich gar nicht mit...[/Edit]