Top-Themen

Aktuelle Themen (A bis Z)

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 Dateien aus best. Verzeichnis mit der Grösse 0 KB löschen

Mitglied: buxi

buxi (Level 1) - Jetzt verbinden

11.09.2006, aktualisiert 12.09.2006, 16087 Aufrufe, 8 Kommentare

Datei Löschscript für Dateien mit weniger als 1 kB oder genau 0 KB

Hallo liebes Administratoren.de-Team,

ich habe folgende Frage:
Wie kann ich unter Windows NT4/2000/Xp/2003 mit den Bordmitteln (Kommandozeile)
dieses Problem lösen.
Es sollen in einem bestimmten Verzeichnis die Dateien mit einer Grösse von 0 (KB, B) ermittelt und dann gelöscht werden.
Vieleicht ist es auch leichter, zu definieren Dateien mit weniger als 1 (KB,B) ?
Mit DIR kann ich nur sortieren und anzeigen lassen.

Danke für eure Unterstützung vorab.

Gruß
Buxi
Mitglied: Metzger-MCP
11.09.2006 um 13:13 Uhr
Du kannst das mit einer Batchdatei lösen.

Verzeichnisse größensortiert mit dem dir Befehl in eine Txt Datei schreiben.
Aus dieser Datei kannst du dann die 0KB Biester mit einer Forschleife extrahieren
in eine 2. TXT. Im Anschluß kannst du mit einer Forschleife die Datein löschen.

Da kann ich dir aber auch eine fertige Batchdatei zusenden geben.

MFG Metzger

Edit

Datei inhalt ohne Gewähr.
@echo off
echo. > dir1.txt
echo. > dir2.txt
echo. > dir3.txt
dir /OGS *.* > dir1.txt
for /F "eol=; tokens=1,2,3,4* delims= " %%i in (dir1.txt) do echo %%k %%l >> dir2.txt
for /F "eol=; tokens=1,2,3,4* delims= " %%i in (dir2.txt) do if /i %%i EQU 0 echo %%i %%j >> dir3.txt

rem for /F "eol=; tokens=1,2,3,4* delims= " %%i in (dir2.txt) do if /i %%i EQU 0 echo %%j >> dir3.txt
rem for /F "eol=; tokens=1,2,3,4* delims= " %%i in (dir3.txt) do del %%i

So wie die Datei oben ersichtlich ist, protokoliert sie in DIR3.txt alle Datein die gelöscht werden würden.

Wird vor der 2te Forschleife ein rem gesetzt und bei den unteren beiden Rem entfernt, so löscht sie alle 0KB augenblicklich. Die Protokolierung bleibt erhalten.
Bitte warten ..
Mitglied: Biber
11.09.2006 um 13:15 Uhr
Moin buxi,

vom CMD-Prompt aus:

01.
@for /R D:\temp\Backup1 %i in (*.*) do @if %~zi==0 del %i
...würde alles im Verzeichnis D:\temp\Backup1 und darunter löschen, was 0-Byte-Größe hat.
Wenn Du nicht in allen Verzeichnissen unterhalb löschen willst, musst Du noch eine Zusatzbedingung anhängen, ob denn die gefundene Datei auch im Verzeichnis, das vorn in der ersten Klammer steht, gefunden wurde.

01.
@for /R D:\temp\Backup1 %i in (*.*) do @if %~zi==0 if /i %~dpi==D:\temp\Backup1\ del %i
Als Batch mit einem Parameter "NameDesVerzeichnisses" sähe das so aus:
01.
::-------snipp Del0Files.bat 
02.
@for /R %1 %%i in (*.*) do @if %%~zi==0 @if /i [%%~dpi]==[%1\] echo del %%i 
Richtigerweise würde der Oneliner bei mir folgende 0-Byte-Datei finden:
01.
>f:\Del0Files.bat d:\temp\Backup1 
02.
del d:\temp\Backup1\AdobeWeb.log
Zum Test macht der Batch nur ein "echo del ..." ; zum Scharfmachen das Wort "echo" löschen.


Gruß
Biber
Bitte warten ..
Mitglied: buxi
11.09.2006 um 17:03 Uhr
Hallo Biber,

habe den 3. Teil ( mit Parameterübergabe )deiner Batch-Exkursion ausprobiert. Dieser funktioniert.
Leider bekomme ich bei Ausführung der 2. Batch :
@for /R D:\temp\Backup1 %i in (*.*) do @if %~zi==0 if /i %~dpi==D:\temp\Backup1\ del %i
-----folgende Fehlermeldung:
Die folgende Verwendung des Pfadoperators zur Ersetzung eines Batchparameters
ist ungültig: %~dpi==D:\temp\Backup1\ del %i
Hast Du eine zündende Idee ?
Ich habe mir die FOR-Synthax angeschaut (muss mich allerdings noch etwas damit beschäftigen) und ad-hoc keinen Fehler entdecken können.
Danke Dir für eine Antwort.

Gruß
buxi
Bitte warten ..
Mitglied: Biber
11.09.2006 um 17:34 Uhr
Moin buxi,

ja, ist erklärlich.
Der zweite Oneliner war gar nicht als Batch gedacht, sondern auch noch als Versuch am CMD-Prompt.
Da liefert genau diese Zeile (nur wieder mit "echo del" statt "del" am Ende):
--am CMD-Prompt:--
01.
>@for /R D:\temp\Backup1 %i in (*.*) do @if %~zi==0 if /i %~dpi==D:\temp\Backup1\ echo del %i 
02.
del D:\temp\Backup1\AdobeWeb.log
Als Oneliner-Batch müssen alle Zählvariablen (also die %i, %~dpi, %~zi) jewils mit 2 %%-Zeichen geschrieben werden.
Also wäre diese CMD-Anweisung oben als Batch so (siehe unten) zu schreiben:
01.
::---snipp Der2teOneliner.bat 
02.
@for /R D:\temp\Backup1 %%i in (*.*) do @if %%~zi==0 if /i %%~dpi==D:\temp\Backup1\ echo del %%i
... aber der wäre ja als Batch zu unflexibel, weil er sich ja immer nur auf das Verzeichnis "D:\temp\Backup1" bezieht.
Deshalb war dann ja als einzige Batch-Variante die 3. Fassung, die mit einem beliebigen Verzeichnis als Parameter herausgekommen.

Gruß
Biber
Bitte warten ..
Mitglied: buxi
11.09.2006 um 17:47 Uhr
Moin Biber, und Metzger ,

danke, danke sehr für die Hilfe. Langsam erschliesst sich mir die FOR-usability.
Werde mich in der nächsten Zeit mal aktiver hier beteiligen - give and take.

Thanks a lot.
Bitte warten ..
Mitglied: buxi
11.09.2006 um 19:31 Uhr
Hallo Biber,

ich habs nochmals durchgetestet.
Kleines Problem jetzt:
Wenn in dem Verzeichnis, in welchem die zu löschenden Dateien liegen,
eine Datei mit einem Leerzeichen z. B. "Neu Worddokument.doc" etc. liegt,
dann bekomme ich eine Fehlermeldung (liegt wohl am Space dazw. ).
f: \Neu konnte nicht gefunden werden
f: \Wordokument.doc konnte nicht gefunden werden.
Diese wird dann nicht gelöscht.
Kann man das elegant umgehen ?
Hochkommatas und /Q funzen da wohl nicht.

Brainstoooorming ..

Gruß
Buxi
Bitte warten ..
Mitglied: Biber
11.09.2006 um 20:49 Uhr
Moin buxi,
ja, das geht noch relativ stressarm.
Einfach das %%i nach dem "del" in Hochkommas setzen.

Aber: --> 2 oder 3 Fälle sind noch nicht abgefangen:
a) es kann ja Pfade mit Leerzeichen im Namen geben. Dazu muss auch der Parameter 1 bzw. die Prüfung leerzeichentauglich gemacht werden
01.
::-------snipp Del0Files.bat 
02.
@for /R %1 %%i in (*.*) do @if %%~zi== 0 @if /i "%%~dpi"=="%~1\" @echo del "%%i" 2>nul
b) Gerade bei diesen 0-Byte-Dateien sind einige "in Gebrauch" oder ReadOnly oder schlicht nicht löschbar. Dazu würde ich noch ans Ende der Zeile ein "2>nul" stellen.
Auf Deutsch: Unterdrücke Fehlermeldungen.

c) okay, Faulheit... ich prüfe ja nicht mal, ob ein Parameter übergeben wurde.
Ist also nicht gerade ein Schnipsel, den ich irgendeinem Uneingeweihten schenken würde.
Dir Prüfung sollte (wenn es als Batch irgendwo gespeichert werden soll) schon rein.


Auch wenn sich dadurch die Zeilenzahl langfristig verdoppeln sollte..
01.
::-------snipp Del0Files.bat 
02.
@if not [%1]==[] @for /R %1 %%i in (*.*) do @if %%~zi== 0 @if /i "%%~dpi"=="%~1\" @echo del "%%i" 2>nul
Gruß
Biber
P.S. Wer jetzt die ganze Geschichte mitgelesen hat, versteht jetzt eine ganz schön kryptische Batchzeile.
Die dürfte man/frau aber auch normalerweise niemandem vor dem Frühstück anbieten.
Bitte warten ..
Mitglied: Metzger-MCP
12.09.2006 um 11:11 Uhr
Gruß
Biber
P.S. Wer jetzt die ganze Geschichte mitgelesen hat, versteht jetzt eine ganz
schön kryptische Batchzeile. Die dürfte man/frau aber auch normalerweise niemandem
vor dem Frühstück anbieten.

he he ja so ist das ! Wer in den Rechner schaut bevor er ein Muntermacher genommen hat ist selber schuld ! aber abends ( 21:00 ) ist das ja noch so gerade verdauenbar.

Dieser kommentar kann gefahrlos überlesen werden.
MFG Metzger
Bitte warten ..
Ähnliche Inhalte
Windows 7
0 KB dateien automatisch löschen
Frage von amgm2006Windows 75 Kommentare

Guten Morgen, ich habe hier ein System, das tausende von 0 kb Dateien enthält. Zu bereinigen sind 4 Laufwerke ...

Windows Server
PDF-Dateien auf einmal mit 0 kB
gelöst Frage von AkcentWindows Server9 Kommentare

Hallo, mir fällt seit ein paar Wochen auf, dass PDF-Dateien, die ich aus meinem Mail-Client in einen Windows Dateiordner ...

VB for Applications
Kopieren von Werte größer 0
gelöst Frage von 136766VB for Applications18 Kommentare

Hallo Community, ich möchte in diesem Code noch zusätzlich hinzufügen dass nur die Werte die größer 0 sind kopiert ...

Windows 7

TXT-Datei plötzlich 0 KByte groß

gelöst Frage von SebastianJuWindows 715 Kommentare

Hallo, ich hatte eine TXT-Datei in Bearbeitung als der Festplattenspeicher auf 0 Byte ging. Aus irgendeinem Grund total voll ...

Neue Wissensbeiträge
Router & Routing

Endlich: Reines Kabel-TV Modem in D erhältlich !

Information von aqui vor 2 TagenRouter & Routing9 Kommentare

Mit dem Technicolor TC4400-EU Modem sind nun auch Breitband Router ohne integriertes Modem oder Firewalls wie z.B. die pfSense ...

Netzwerkgrundlagen
The Illustrated TLS Connection
Information von Lochkartenstanzer vor 3 TagenNetzwerkgrundlagen

Moin, Unter findet man eine gelungene Erläuterung von TLS. Fördert sehr das verständnis darüber, was da passiert. lks

Windows 10

Zuverlässiger Remove-AppxProvisionedPackage Ausführen in W10-1803

Tipp von NetzwerkDude vor 4 TagenWindows 104 Kommentare

Moin, Remove-AppxProvisionedPackage hat in 1709 recht zuverlässig funktioniert, in 1803 ist es leider so das es gerne mail failed ...

LAN, WAN, Wireless
Erfahrung mit dem tplink eap115-wall
Erfahrungsbericht von fisi-pjm vor 4 TagenLAN, WAN, Wireless

Die Hintergründe Als ausgebildeter Fisi und ambitionierter "Hobby ITler" bin ich Netzwerktechnisch immer auf der Suche nach "schönen" Lösungen ...

Heiß diskutierte Inhalte
Netzwerkprotokolle
OpenVPN auf dem Client Verständnisfrage
gelöst Frage von bk900042Netzwerkprotokolle23 Kommentare

Hallo Community, möchte OpenVPN benutzen, um mich über VPN per RDP zu einem Server zu verbinden und auch GIT ...

Windows Server
AD User wird immer wieder gesperrt
Frage von YellowcakeWindows Server14 Kommentare

Hey ich habe einen User (ein GL User - Natürlich was denn sonst) der immer wieder gesperrt wird. Ich ...

Netzwerkmanagement
Netzwerklaufwerk verbinden nicht möglich
gelöst Frage von SteiniMNetzwerkmanagement13 Kommentare

Hallo Leute, ich bin neu hier und brauche eure Hilfe. Danke schon mal im Voraus. Ich habe folgendes Problem: ...

Switche und Hubs
OpenSource oder Freeware zur Verwaltung von Switchen
Frage von JonskezSwitche und Hubs12 Kommentare

Hallo, gibt eine kostenlose Verwaltungssoftware für Switche (überwiegend HP/Aruba)? Es sollte möglich sein, aus der Ferne z.B. die Firmware ...