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, 15099 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 ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst Batch - Datei aus Ordner einlesen mit Ausnahmen! (4)

Frage von Daedrafaction zum Thema Batch & Shell ...

Windows Server
gelöst Hunderttausende leerer Ordner mit IDs als Name in Windows-Temp-Ordner (14)

Frage von YotYot zum Thema Windows Server ...

Batch & Shell
gelöst Leerzeichen per Batch entfernen vor der Weiterbearbeitung (3)

Frage von daHartl zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch: Bilder (gewisse Nummern) vom Verzeichnis A in einen Ordner Kopieren (3)

Frage von sagula91 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...