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

Batch zum entfernen leerer Ordner in einem Verzeichnis

Frage Entwicklung Batch & Shell

Mitglied: Shadow88

Shadow88 (Level 1) - Jetzt verbinden

02.04.2008, aktualisiert 03.04.2008, 15594 Aufrufe, 2 Kommentare

Erst mal: Ich bin nicht besonders fit in Bat Programmierung also "Deutsch" mit mir reden, danke =)

Hallo zusammen =),

hoffe ihr könnt mir bei einem kleinen Problem helfen.

Und zwar möchte ich eine .bat erstellen die in dem Verzeichnis in dem sie liegt alle leeren Ordner und deren leere Unterordner löscht.

Zum Beispiel:


01.
C:/Aufraeumarbeiten                                 (variables Stammverzeichnis, kann auch anderen Namen haben) 
02.
C:/Aufraeumarbeiten/aufrauemen.bat                          
03.
-> C:/Aufraeumarbeiten/Ordner_leer                  # 
04.
-> C:/Aufraeumarbeiten/Ordner_leer/Ordner_voll      # 
05.
-> C:/Aufraeumarbeiten/Ordner_leer/Ordner_leer      #   Werden von batch nach leeren Ordnern durchsucht und diese sollen 
06.
-> C:/Aufraeumarbeiten/Ordner_voll/Ordner_voll      #   gelöscht werden. Volle Ordner bleiben bestehend. 
07.
-> C:/Aufraeumarbeiten/Ordner_voll/Ordner_leer      # 
08.
-> C:/Aufraeumarbeiten/Ordner_voll                  #


Hoffe ihr könnt mir da helfen =)

Vielen Dank schon mal!

Glg,

Shadow88
Mitglied: bastla
02.04.2008 um 23:13 Uhr
Hallo Shadow88 und willkommen im Forum!

Eigentlich nehme ich für solche Zwecke lieber ein VBScript - aber das lässt sich auch in einen Batch einbetten:
01.
@echo off & setlocal 
02.
set D=%temp%\DelEmptyFolders.vbs 
03.
echo DeleteEmptyFolders(CreateObject("Scripting.FileSystemObject").GetFolder(WScript.Arguments(0)))>%D% 
04.
echo Sub DeleteEmptyFolders(Ordner):For Each Unter In Ordner.SubFolders:DeleteEmptyFolders(Unter)>>%D% 
05.
echo If (Unter.SubFolders.Count+Unter.Files.Count)=0 Then:Unter.Delete:End If:Next:End Sub>>%D% 
06.
cscript //nologo %D% "%~dp0" 
07.
del %D%
Diese Batchdatei erzeugt ein temporäres VBScript ("DelEmptyFolders.vbs") im Temp-Verzeichnis (der komplette Pfad zum Script wird in der Variablen %D% gespeichert), ruft dieses auf ("cscript //nologo %D%") und übergibt als Ausgangsverzeichnis den Pfad zum Ordner, in dem die Batchdatei selbst liegt - die Schreibweise
01.
"%~dp0"
steht für "Laufwerk (drive) und Pfad (path) der Batchdatei" (diese liest ihren eigenen Pfad und Dateinamen aus dem Parameter %0). Mit den umgebenden Anführungszeichen wird für den Fall vorgesorgt, dass der Pfad Leerzeichen enthalten sollte.

Das VBScript beginnt dann im Ausgangsverzeichnis damit, rekursiv die gesamte Unterverzeichnisstruktur zu durchforsten und stellt für jedes Unterverzeichnis fest, ob die Anzahl der darin enthaltenen Dateien und weiteren Unterverzeichnisse insgesamt 0 ist - in diesem Fall ist dieses Verzeichnis leer und kann gelöscht werden.

Da ich das VBScript in den drei "echo"-Zeilen doch ein wenig komprimiert hinterlegt habe, hier das Ganze nochmals in etwas aufgelockerter Schreibweise:
01.
DeleteEmptyFolders(CreateObject("Scripting.FileSystemObject"). _ 
02.
	GetFolder(WScript.Arguments(0))) 
03.
 
04.
Sub DeleteEmptyFolders(Ordner) 
05.
For Each Unter In Ordner.SubFolders 
06.
	DeleteEmptyFolders(Unter) 
07.
	If (Unter.SubFolders.Count+Unter.Files.Count) = 0 Then 
08.
		Unter.Delete 
09.
	End If 
10.
Next 
11.
End Sub
Grüße
bastla
Bitte warten ..
Mitglied: Shadow88
03.04.2008 um 09:22 Uhr
Boahh.... bin wirklich beeindruckt =)

Vielen Herzlichen Dank!

Glg,

Shadow88
Bitte warten ..
Ähnliche Inhalte
Monitoring
gelöst Zabbix: wenn Verzeichnis fehlt oder leer ist, dann Trigger (5)

Frage von honeybee zum Thema Monitoring ...

Batch & Shell
gelöst Leere Array-Werte aus einem Array entfernen (3)

Frage von ToniHo zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch xkopie von Ordner in Ordner (3)

Frage von TicTakTeo zum Thema Batch & Shell ...

Batch & Shell
gelöst Linie mit Leer überschreiben (Batch) (3)

Frage von clragon zum Thema Batch & Shell ...

Neue Wissensbeiträge
Windows Server

Umstellung SHA 1 auf SHA 2 - Migration der CA von CSP auf KSP

Tipp von Badger zum Thema Windows Server ...

Windows 10

Quato DTP94 unter Windows 10 x64 installieren und verwenden

Anleitung von anteNope zum Thema Windows 10 ...

Windows 10

Win10 1703 und Nutzerkennwörter bei Ersteinrichtung - erstaunliche Erkenntnis

(15)

Erfahrungsbericht von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Internet
Jeden morgen Internet-Probleme (32)

Frage von pjrtvly zum Thema Internet ...

Server-Hardware
HP DL380 G7: Booten vom USB via USB 3.1-PCI-e Karte möglich? (24)

Frage von Paderman zum Thema Server-Hardware ...

Windows 7
Bluesreens unternehmensweit (19)

Frage von SYS64738 zum Thema Windows 7 ...

LAN, WAN, Wireless
IP Adressen - Modem - Switch - Accesspoint (19)

Frage von teuferl82 zum Thema LAN, WAN, Wireless ...