Datei löschen und Löschen protokollieren
Liebe Leute,
ich möchte eine Datei blabla.txt, die als versteckte Datei unter demselben Namen in vielen Unterverzeichnissen vorkommt, mit Hilfe einer Batch-Datei löschen.
Das Löschen dieser Datei soll in einer Log-Datei vermerkt sein:
usw.
Das Ganze soll unter DOS von Windows 2000 / Windows 2003 Server lauffähig sein.
Hat jemand von Euch eine Idee?
Vielen Dank für Eure Mühe.
Herzliche Grüße
Ruebezahl
ich möchte eine Datei blabla.txt, die als versteckte Datei unter demselben Namen in vielen Unterverzeichnissen vorkommt, mit Hilfe einer Batch-Datei löschen.
Das Löschen dieser Datei soll in einer Log-Datei vermerkt sein:
Datei blabla.txt in U:\Verzeichnis\Ordner1 gelöscht
Datei blabla.txt in U:\Verzeichnis7\Ordner1\Mails gelöscht
Datei blabla.txt in U:\Test\Test2\ konnte nicht gelöscht werden
usw.
Das Ganze soll unter DOS von Windows 2000 / Windows 2003 Server lauffähig sein.
Hat jemand von Euch eine Idee?
Vielen Dank für Eure Mühe.
Herzliche Grüße
Ruebezahl
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 39983
Url: https://administrator.de/contentid/39983
Ausgedruckt am: 20.11.2024 um 13:11 Uhr
7 Kommentare
Neuester Kommentar
Moin Rübezahl,
da ja der DEL-Befehl keinen verwertbaren Errorlevel bei Fehler zu haben scheint, denken wir uns mal eine ganz andere Strategie aus.
Ich nenne die mal Vorher-Nachher-Strategie.
Anzupassen sind die SET-Anweisungen in Zeile 2 und 3 .
Gruß
Biber
da ja der DEL-Befehl keinen verwertbaren Errorlevel bei Fehler zu haben scheint, denken wir uns mal eine ganz andere Strategie aus.
Ich nenne die mal Vorher-Nachher-Strategie.
::--- snipp DeleteTheseHiddenFiles.bat
@echo off & setlocal & set "SetOfStartDirs=U:\ c:\temp\ "d:\Eigene Dateien""
set "mylog=whatever.log" & set "TheHiddenFile=TheHiddenFilename.ext"
if exist vorher.txt del vorher.txt
for %%a in (%SetOfStartDirs%) do for /f "delims=" %%i in ('dir "%%~a\%TheHiddenFile%" /ah /s /b ^2^>nul') do echo %%~fi>>vorher.txt
for %%a in (%SetOfStartDirs%) do del "%%~a\%TheHiddenFile%" /ah /s /f >nul 2>nul
for /f "delims=" %%i in (vorher.txt) do (
if exist "%%i" @echo Datei %%~nxi in %%~dpi gelöscht >>"%mylog%"
if not exist "%%i" @echo Datei %%~nxi in %%~dpi konnte nicht gelöscht werden>>"%mylog%"
)
if exist vorher.txt del vorher.txt
:: ----snapp DeleteTheseHiddenFiles.bat [Ungetestete Skizze]
Anzupassen sind die SET-Anweisungen in Zeile 2 und 3 .
Gruß
Biber
Moin, Rübezahl,
gut, die Datei vorher.txt wird nur angelegt, wenn auch mindestens eine Datei des Namens "TheHiddenFilename.ext" gefunden wird.
Wird gar keine Datei dieses Namens gefunden, gibt es keine Liste der gefundenen Dateien (="vorher.txt").
Da ich diesen Fall gar nicht abprüfe, bekommst Du von meinem Schnipsel eine ähnlich aussagefähige Fehlermeldung wie sonst von M$ üblich.
Abhilfe:
Nach der ersten FOR..IN..DO-Anweisung noch eine Zeile (oder zwei) rein:
Anmerkung: es kann natürlich auch sein, dass die Datei vorher.txt nicht angelegt werden kann, weil der Batch von einer CD gestartet wird oder Dir aus anderen Gründen die Rechte zum Schreiben im aktuellen Verzeichnis fehlen.
Deshalb lieber ändern:
Jetzt: "vorher.txt"
Besser/Sicherer: "%temp%\vorher.txt"
Denn ins %temp%-Verzeichnis gehört so etwas und dort hat auch jeder Schreibrechte.
Gruß
Biber
gut, die Datei vorher.txt wird nur angelegt, wenn auch mindestens eine Datei des Namens "TheHiddenFilename.ext" gefunden wird.
Wird gar keine Datei dieses Namens gefunden, gibt es keine Liste der gefundenen Dateien (="vorher.txt").
Da ich diesen Fall gar nicht abprüfe, bekommst Du von meinem Schnipsel eine ähnlich aussagefähige Fehlermeldung wie sonst von M$ üblich.
Abhilfe:
Nach der ersten FOR..IN..DO-Anweisung noch eine Zeile (oder zwei) rein:
if not exist vorher.txt echo Keine Dateien %TheHiddenFile% gefunden... nothing to do....
if not exist vorher.txt goto eof:
Anmerkung: es kann natürlich auch sein, dass die Datei vorher.txt nicht angelegt werden kann, weil der Batch von einer CD gestartet wird oder Dir aus anderen Gründen die Rechte zum Schreiben im aktuellen Verzeichnis fehlen.
Deshalb lieber ändern:
Jetzt: "vorher.txt"
Besser/Sicherer: "%temp%\vorher.txt"
Denn ins %temp%-Verzeichnis gehört so etwas und dort hat auch jeder Schreibrechte.
Gruß
Biber