ruebezahl
Goto Top

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:

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

Content-Key: 39983

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

Ausgedruckt am: 28.03.2024 um 21:03 Uhr

Mitglied: bve
bve 15.09.2006 um 13:52:53 Uhr
Goto Top
Moin, eigentlich ganz simpel:

del c:\blabla.txt /ah /s>c:\test.log

/ah = löscht auch versteckte Dateien
/s = löscht Dateien in Unterverzeichnissen
= leitet Bildschirmausgabe in Datei um

Noch Fragen face-wink
Mitglied: Ruebezahl
Ruebezahl 13.10.2006 um 15:27:24 Uhr
Goto Top
Hallo bve,

die Lösung ist geradezu verblüffend einfach; jedoch gibt DEL als Meldung "Datei wurde gelöscht - c:\WINNT\blabla.txt" anstatt "Datei blabla.txt in C:\WINNT gelöscht" aus. Es existiert offenbar keine Möglichkeiten, bei DEL den Text den Vorgaben anzupassen.
Wenn (aus welchen Gründen auch immer) das Löschen gescheitert ist, schweigt DEL und hinterlässt keinen Eintrag in der log-Datei.
Wurde die Datei überhaupt nicht gefunden, erscheint die Fehlermeldung "blabla.txt konnte nicht gefunden werden". Diese Meldung wird nicht in der log-Datei geschrieben.

Herzliche Grüße
Ruebezahl
Mitglied: Biber
Biber 13.10.2006 um 19:44:02 Uhr
Goto Top
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.
::--- 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
Mitglied: Ruebezahl
Ruebezahl 24.10.2006 um 12:20:34 Uhr
Goto Top
Hallo Biber,

vielen Dank für Deinen Vorschlag mit der Batch-Datei. Ich habe das mal getestet und bekomme immer wieder die Fehlermeldung

\"Die Datei \'vorher.txt\' kann nicht gefunden werden\".

Ursache scheint hier die Zeile mit den zwei FOR-Schleifen zu sein:

for %%a in (%SetOfStartDirs%) do for /f \"delims=\" %%i in (\'dir \"%%~a\\%TheHiddenFile%\" /ah /s /b ^2^>nul\') do echo %%~fi>>vorher.txt

Hast Du eine Idee?

Herzliche Grüsse
Ruebezahl
Mitglied: Biber
Biber 25.10.2006 um 10:56:07 Uhr
Goto Top
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:
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
Mitglied: Ruebezahl
Ruebezahl 30.10.2006 um 14:32:50 Uhr
Goto Top
Hallo Biber,


vielen Dank für Deine Mühe.
Ich habe Dein Script mit der zuletzt vorgeschlagenen Ergänzung nun in eine andere Batch-Datei eingebaut - es funktioniert alles einwandfrei. Die Datei hat nun auch die erste Bewährung in der Praxis bestanden und alle Beteiligten sind zufrieden - auch mit der Logdatei.
Übrigens habe ich für die Dokumentation ein anderes Script von Dir ("NumberMe.bat") herangezogen... es läuft super.

Nochmals herzlichen Dank
für Deine Mühe

Ruebezahl
Mitglied: Biber
Biber 30.10.2006 um 14:40:57 Uhr
Goto Top
Vielen Dank für die Rückmeldung, Rübezahl,

ich setze diesen Beitrag dann mal auf "Gelöst".

Freut mich, dass es jetzt läuft.

Grüße
Biber