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

Frage Entwicklung Batch & Shell

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, 15264 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 ...

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 ...

Batch & Shell
Alle Dateien in Verzeichnis und Unterverzeichnissen löschen, mit Ausnahme aller.txt-Dateien
gelöst Frage von tegwertBatch & Shell5 Kommentare

Hallo zusammen! Ich habe zum löschen aller Dateien in bestimmten Verzeichnissen und dessen Unterverzeichnissen folgende Batchzeile erstellt: Dabei muss ...

Neue Wissensbeiträge
Router & Routing

PfSense als Addon auf QNAP

Information von magicteddy vor 10 StundenRouter & Routing2 Kommentare

Moin, für Spielereien eine ganz nette Idee aber ich fürchte das soetwas auch als echte Firewall genutzt wird: In ...

Datenschutz

Teamviewer kommt für IoT-Geräte wie den Raspberry Pi

Information von magicteddy vor 16 StundenDatenschutz

Moin, jetzt werden IoT Geräte endgültig zur Wanze? Anscheinend kann man auf einem Dashboard seine Geräte visualisieren Ich stelle ...

Microsoft

Letzte Updates für Win10 und Server2016 müssen bei Bedarf über den Update catalogue in den WSUS importiert werden!

Tipp von DerWoWusste vor 21 StundenMicrosoft1 Kommentar

automatisch kommt da nichts an im WSUS und auch nicht im SCCM. Siehe Hinweise zum Bezug der jeweils neuesten ...

Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 3 TagenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Preis für Wartungsvertrag ok?
gelöst Frage von a-za-zNetzwerkmanagement22 Kommentare

Hallo! Mal ne Frage, weil ich mich mit dem akzeptablen Preis für einen Reaktionszeitvertrag nicht auskenne. Meine Firma hat ...

Windows Netzwerk
Ist ein Portforwarding auf einen PC ohne lauschendes Programm ein (großes) Sicherheitsproblem?
Frage von PluwimWindows Netzwerk13 Kommentare

Hallo zusammen, zur Fernwartung eines Rechners an einem anderen Ort nutze ich VNC. Da dieser Rechner einfach nur eine ...

Windows Server
Terminal Server 2016 erkennt Berechtigungen nicht
gelöst Frage von Thomas2Windows Server10 Kommentare

Hallo Administratoren, folgendes Problem stellt sich dar: Es gibt zwei Windows Server 2016, die als Terminal Server fungieren. Jetzt ...

Sonstige Systeme
7-zip: Programm frägt nach Passwort erst bei einzelnen Dateien
Frage von freeskierchrisSonstige Systeme7 Kommentare

Guten Morgen, ich habe ein Problem beim Arbeiten mit 7-zip: Wenn ich die einzelnen Dateien zu einem Archiv verpacke ...