Sommige toepassingen creëren lege 0-byte-bestanden in hun gegevensmappen en slagen er niet in deze op te ruimen. Als u na verloop van tijd veel zero-byte-bestanden in een maphiërarchie ziet, zijn hier enkele methoden om al die 0-byte-bestanden te vinden en te verwijderen.
Zoek en/of verwijder lege (0 byte) bestanden in Windows:
- met behulp van het hulpprogramma "Vind lege bestanden-n-mappen"
- met behulp van Windows Zoeken
- Opdrachtprompt gebruiken
- PowerShell gebruiken
- VBScript gebruiken
- met behulp van DelEmpty.exe
Vind en verwijder 0-byte bestanden recursief in een mappenboom
Het is belangrijk op te merken dat het willekeurig verwijderen van 0-byte-bestanden soms problematisch kan zijn, omdat sommige toepassingen ze als tijdelijke aanduiding of om een andere reden nodig hebben. Als u zeker weet dat u geen 0-byte-bestanden in een mappad nodig hebt en ze allemaal wilt verwijderen, volgt u een van de onderstaande methoden.
Laten we beginnen met een nette freeware GUI-tool van derden en vervolgens de native methoden behandelen.
1. Het hulpprogramma "Vind lege bestanden-n-mappen" gebruiken
Vind lege bestanden-n-mappen is een uitstekende tool die lege bestanden kan vinden en verwijderen (0-byte) en lege mappen recursief onder een mappenboom.
Downloaden Vind lege bestanden-n-mappen (600 KB installatieprogramma) van Ashisoft.com.
Selecteer de map en klik op Nu scannen.
De tool zal lege bestanden en mappen op aparte tabbladen weergeven.
Klik op het tabblad Lege bestanden op Alle bestanden markeren en klik vervolgens op Verwijder bestanden.
Gelijk aan verwijder de 0-byte bestanden in de geselecteerde mappenboom, klik op de Lege bestanden tabblad.
Ashisoft.com heeft andere geweldige tools die je kunt bekijken!
2. Windows Zoeken gebruiken
Met Windows Search kunt u alle 0-byte-bestanden weergeven met behulp van de maat:
query-operator.
Open de map waarin u lege bestanden wilt zoeken of verwijderen.
Typ in het zoekvak maat: leeg
of grootte: 0 KB
Om de resultaten te filteren op een bestandsextensie (bijv. javascript-bestanden → extensie .js
), gebruik het volgende Geavanceerde querysyntaxis (AQS):
grootte: leeg EN ext: js
3. Opdrachtprompt gebruiken
Gebruik de volgende opdracht om alle bestanden van 0 bytes (0 KB) recursief in een map en submappen weer te geven en de namen naar een bestand uit te voeren.
Houd er rekening mee dat u de opdracht moet uitvoeren vanuit de map waarin u lege (0 KB) bestanden wilt zoeken of verwijderen.
for /r %F in (*) do @if %~zF==0 echo "%F" >>d:\0byte-files.txt
Als alternatief kunt u het pad van de doelmap opnemen in de voor
commando, zodat u de map in het consolevenster niet hoeft te wijzigen. Voorbeeld:
voor /r "d:\websites" %F in (*) do @if %~zF==0 echo "%F" >>d:\0byte-files.txt
Op die manier hoeft u niet over te schakelen naar die specifieke map in de opdrachtprompt
De volledige lijst met uitvoer van 0-byte bestanden wordt geschreven naar het bestand met de naam 0byte-bestanden.txt
op de D:\
drijfveer.
Om de bestanden te verwijderen, gebruik je de del
commando in plaats van echo
.
voor /r %F in (*.*) doe @if %~zF==0 del "%F"
of vermeld het pad van de doelmap in de opdracht zelf:
voor /r "d:\websites" %F in (*.*) do @if %~zF==0 del "%F"
Zoek en verwijder 0-byte bestanden met een specifieke bestandsextensie
In de bovenstaande voorbeelden kunt u zelfs filteren op bestandsextensie. Om bijvoorbeeld 0-byte te verwijderen .tekst
bestanden, zou je gebruiken *.tekst
in plaats van *.*
of *
voor /r %F in (*.txt) doe @if %~zF==0 del "%F"
of met vermelding van het mappad:
voor /r "d:\websites" %F in (*.txt) doe @if %~zF==0 del "%F"
Dat zou alle lege wissen .tekst
bestanden uit de huidige map en submappen, of recursief in de opgegeven mappenboom.
Een batchbestand maken
Als u een batchbestand wilt maken naar: zoek en lijst lege bestanden en voer de resultaten uit naar een tekstbestand, hier is er een:
@echo uit. set out="d:\0byte-files.txt" voor /r "%~1." %%A in (*.*) doen als %%~zA == 0 echo "%%~fA" >> %out%
Bewaar bovenstaande inhoud als zoek-lege-bestanden.bat
.
Naar verwijderen lege bestanden in plaats van de lijst met bestanden uit te voeren, gebruik dit batchbestand:
@echo uit. voor /r "%~1." %%A in (*.*) doen als %%~zA == 0 del "%%~fA"
Naar voer het batchbestand uit recursief tegen een map, zou u de volgende syntaxis gebruiken:
d:\scripts\vind-lege-bestanden.bat d:\websites
Wat doet het bovenstaande commando?
-
voor /r %F in (*)
herhaalt bestanden recursief in de genoemde map en submappen. -
als %~zF==0
controleert of het herhaalde bestand een bestand van 0 bytes is -
del %%~fA
verwijder het 0-byte-bestand
4. PowerShell gebruiken
Start PowerShell.exe en gebruik een van de volgende methoden:
Lijst met lege (0 KB) bestanden
Naar krijg de lijst van 0-byte bestanden onder een mappenboom, gebruik deze opdrachtregelsyntaxis:
Get-ChildItem -Pad "D:\websites\test" -Recurse -Force | Waar-Object { $_.PSIsContainer -eq $false -en $_.Length -eq 0 } | Selecteer -ExpandProperty FullName
Om de lijst naar een bestand uit te voeren:
Get-ChildItem -Pad "D:\websites" -Recurse -Force | Waar-Object { $_.PSIsContainer -eq $false -en $_.Length -eq 0 } | Selecteer -ExpandProperty FullName | Set-Content -Pad d:\found.txt
Om de lijst uit te voeren naar de rasterweergave:
Get-ChildItem -Pad "D:\websites" -Recurse -Force | Waar-Object { $_.PSIsContainer -eq $false -en $_.Length -eq 0 } | out-gridview
Alleen een lijst weergeven specifiek bestandstype (bijv. .bmp
) :
Get-ChildItem -Pad "D:\websites" -inclusief *.bmp -Recurse -Force | Waar-Object { $_.PSIsContainer -eq $false -en $_.Length -eq 0 } | out-gridview
Verwijder lege (0 KB) bestanden
Naar verwijderen alle 0-byte-bestanden onder een mappenboom, gebruik deze opdrachtregelsyntaxis:
Get-ChildItem -Pad "D:\websites" -Recurse -Force | Waar-Object { $_.PSIsContainer -eq $false -en $_.Length -eq 0 } | Verwijder voorwerp
Om 0-byte bestanden met een. te verwijderen specifieke extensie (bijv. .bmp
)
Get-ChildItem -Pad "D:\websites" -inclusief *.bmp -Recurse -Force | Waar-Object { $_.PSIsContainer -eq $false -en $_.Length -eq 0 } | Verwijder voorwerp
5. VBScript gebruiken
De volgende VBScript wist recursief lege (0-byte) bestanden in een mappenboom.
Kopieer de volgende code naar Kladblok en sla deze op als del-zero-byte-files.vbs
Optie Explicit If (WScript. Argumenten. Tel <> 1) Dan WScript. Echo("Gebruik: cscript DeleteEmptyFolders.vbs {pad}") WScript. Afsluiten (1) End If Dim strPath: strPath = WScript. Argumenten (0) Dim fso: Stel fso = CreateObject("Scripting. BestandssysteemObject") Dim objFolder: Stel objFolder = fso in. GetFolder (strPath) Dim sDelList, sDelErr, sFilePath. Dim iCnt. iCnt = 0 DeleteZeroByteFiles objFolder Sub DeleteZeroByteFiles (map) Dim submap, bestand Bij fout Hervatten Volgende 'Sla fouten over bij toegang tot knooppunten, enz. Voor elke submap In map. Submappen DeleteZeroByteFiles submap Volgende Bij Fout Ga naar 0 Voor elk bestand In map.bestanden Als bestand.grootte = 0 Dan sFilePath = bestand. Pad bij fout Hervatten Volgende fso. DeleteFile-bestand, True If Err.number <> 0 Dan sDelErr = sDelErr & Err.number & ": " & Err.description & _ vbCrLf & sFilePath & vbCrLf & vbCrLf Anders sDelList = sDelList & vbCrLf & sFilePath iCnt = iCnt + 1 End If On Error Goto 0 End If Volgende. End Sub If sDelList = "" En sDelErr = "" Dan WScript. Echo "Geen lege bestanden gevonden onder het " & _ & strPath & & " tree" WScript. Ontslag nemen. End If If sDelList <> "" then sDelList = "Lijst met verwijderde lege bestanden" & vbCrLf _ & String (38,"-") & vbCrLf & sDelList & vbCrLf & _ vbCrLf & "Totaal: " & iCnt & " bestanden verwijderd." Als sDelErr <> "" dan sDelErr = "Deze bestanden konden niet worden verwijderd" & _ vbCrLf & String (45,"-") & vbCrLf & sDelErr WScript. Echo sDelList & vbCrLf & vbCrLf & sDelErr
Gebruik
Om het script tegen een map uit te voeren, kunt u wscript.exe of cscript.exe gebruiken, zoals hieronder:
cscript d:\scripts\del-zero-byte-files.vbs "d:\reisdocumenten" wscript d:\scripts\del-zero-byte-files.vbs "d:\reisdocumenten"
CScript.exe toont de uitvoer naar het consolevenster. Dat betekent dat u het vanuit een opdrachtpromptvenster moet uitvoeren om de uitvoer te zien.
WScript.exe toont de uitvoer in de GUI.
via het menu Verzenden naar
U kunt een snelkoppeling naar het script maken in uw VerzendenNaar map en noem het als 0-byte bestanden verwijderen. Voorvoegsel wscript.exe
in het doelveld van de snelkoppelingseigenschappen.
Klik vervolgens met de rechtermuisknop op een map waarvan u recursief lege bestanden in de mappenboom wilt verwijderen → klik op Verzenden naar → klik 0-byte bestanden verwijderen in het menu Verzenden naar.
U ziet de lijst met verwijderde lege bestanden en het totaal, en bestanden die niet konden worden verwijderd met de respectievelijke foutcodes weergegeven.
6. DelEmpty.exe gebruiken
DelEmpty.exe is een consoletool van IntelliAdmin die lege mappen recursief kan verwijderen. Dit programma kan ook snel de lege 0-byte bestanden recursief.
Het volgende is de syntaxis van de opdrachtregel voor het programma:
DelEmpty.exe OPTIES [PAD]
Argument | Beschrijving |
-F | Verwijder lege (0-byte) bestanden |
-D | Lege mappen verwijderen |
-v | Uitgebreide modus |
-C | Bevestigingsmodus (laat zien wat er is verwijderd) |
-s | Inclusief submappen (doorkruis submappen) |
-l | Maak een lijst van wat zou worden verwijderd (zal niet verwijderen) |
-y | Verwijderen zonder (j/n) prompt |
Voorbeeld 1: Naar lijst de lege bestanden onder een map en zijn submappen, heb ik de volgende opdrachtregelsyntaxis gebruikt:
DelEmpty.exe "Nieuwe map" -f -c -s -y -l
De bovenstaande opdracht toont de lijst met lege mappen, maar zal deze niet verwijderen sinds de -l
(alleen lijst) schakelaar wordt gebruikt.
Voor mapnamen met spatie(s) — bijv. Mozilla Firefox
, zorg ervoor dat u de dubbele aanhalingstekens rond het pad opneemt.
Voorbeeld 2: Naar verwijderen de lege bestanden in een map en submappen, ik voerde dezelfde opdrachtregel uit maar zonder de -l
schakelaar:
DelEmpty.exe "Nieuwe map" -f -c -s -y
Kent u een ander hulpprogramma dat submappen kan doorkruisen en lege bestanden kan verwijderen? Laten we uw opmerkingen weten.
Een klein verzoek: als je dit bericht leuk vond, deel dit dan?
Een "klein" aandeel van jou zou serieus enorm helpen bij de groei van deze blog. Enkele geweldige suggesties:- Speld het!
- Deel het op je favoriete blog + Facebook, Reddit
- Tweet het!