Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Datei löschen und Löschen protokollieren

Frage Entwicklung Batch & Shell

Mitglied: Ruebezahl

Ruebezahl (Level 1) - Jetzt verbinden

13.09.2006, aktualisiert 30.10.2006, 8591 Aufrufe, 7 Kommentare

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
Mitglied: bve
15.09.2006 um 13:52 Uhr
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
Bitte warten ..
Mitglied: Ruebezahl
13.10.2006 um 15:27 Uhr
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
Bitte warten ..
Mitglied: Biber
13.10.2006 um 19:44 Uhr
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.
01.
::--- snipp DeleteTheseHiddenFiles.bat 
02.
@echo off & setlocal & set  "SetOfStartDirs=U:\ c:\temp\ "d:\Eigene Dateien"" 
03.
set "mylog=whatever.log" & set "TheHiddenFile=TheHiddenFilename.ext" 
04.
if exist vorher.txt del vorher.txt 
05.
for %%a in (%SetOfStartDirs%) do for /f "delims=" %%i in ('dir "%%~a\%TheHiddenFile%" /ah /s /b ^2^>nul') do echo %%~fi>>vorher.txt 
06.
for %%a in (%SetOfStartDirs%) do del "%%~a\%TheHiddenFile%" /ah /s /f >nul 2>nul 
07.
for /f "delims=" %%i in (vorher.txt) do ( 
08.
       if exist "%%i" @echo Datei %%~nxi  in %%~dpi gelöscht >>"%mylog%" 
09.
       if not exist "%%i" @echo Datei %%~nxi  in %%~dpi konnte nicht gelöscht werden>>"%mylog%" 
10.
11.
if exist vorher.txt del vorher.txt 
12.
:: ----snapp DeleteTheseHiddenFiles.bat [Ungetestete Skizze]
Anzupassen sind die SET-Anweisungen in Zeile 2 und 3 .
Gruß
Biber
Bitte warten ..
Mitglied: Ruebezahl
24.10.2006 um 12:20 Uhr
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
Bitte warten ..
Mitglied: Biber
25.10.2006 um 10:56 Uhr
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:
01.
if not exist vorher.txt echo Keine Dateien %TheHiddenFile% gefunden... nothing to do.... 
02.
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
Bitte warten ..
Mitglied: Ruebezahl
30.10.2006 um 14:32 Uhr
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
Bitte warten ..
Mitglied: Biber
30.10.2006 um 14:40 Uhr
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
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Batch & Shell
gelöst Texteil anhand zweier Vorgaben aus Datei löschen (12)

Frage von tiforst zum Thema Batch & Shell ...

Batch & Shell
gelöst Source löschen wenn Datei im Zielordner vorhanden (1)

Frage von functionstrut zum Thema Batch & Shell ...

Perl
gelöst Mit Perl aus einer Datei teilidentische Zeilen löschen (5)

Frage von Jeduja zum Thema Perl ...

Windows Server
gelöst Windows ACL "Löschen verweigern" greift nicht - Datei lässt sich immer löschen (28)

Frage von Hastduschonneugestartet zum Thema Windows Server ...

Heiß diskutierte Inhalte
Windows Netzwerk
Windows 10 RDP geht nicht (16)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (13)

Frage von Motte990 zum Thema Microsoft Office ...