From 8c72f3bd85e0646adb877f834c1933b246a751a8 Mon Sep 17 00:00:00 2001 From: Markus Fleschutz Date: Tue, 9 Feb 2021 14:46:54 +0100 Subject: [PATCH] Added remove-empty-dirs.ps1 --- Data/scripts.csv | 1 + README.md | 1 + Scripts/remove-empty-dirs.ps1 | 43 +++++++++++++++++++++++++++++++++++ Scripts/speak-german.ps1 | 0 4 files changed, 45 insertions(+) create mode 100755 Scripts/remove-empty-dirs.ps1 mode change 100644 => 100755 Scripts/speak-german.ps1 diff --git a/Data/scripts.csv b/Data/scripts.csv index 2e6e6648..59987619 100644 --- a/Data/scripts.csv +++ b/Data/scripts.csv @@ -65,6 +65,7 @@ query-smart-data.ps1, queries the S.M.A.R.T. data of your HDD/SSD's and saves it new-email.ps1, starts the default email client to write a new email reboot.ps1, reboots the local computer (requires admin rights) reboot-fritzbox.ps1, reboots the FRITZ!box device +remove-empty-dirs.ps1, removes empty subfolders within the given directory tree search-files.ps1, searches the given pattern in the given files scan-ports.ps1, scans the network for open/closed ports send-email.ps1, sends an email message diff --git a/README.md b/README.md index 1938e604..48e97610 100644 --- a/README.md +++ b/README.md @@ -73,6 +73,7 @@ The following PowerShell scripts can be found in the [Scripts/](Scripts/) subfol * [next-joke.ps1](Scripts/next-joke.ps1) - gets the next random Juck Norris joke * [reboot.ps1](Scripts/reboot.ps1) - reboots the local computer (requires admin rights) * [reboot-fritzbox.ps1](Scripts/reboot-fritzbox.ps1) - reboots the FRITZ!box device +* [remove-empty-dirs.ps1](Scripts/remove-empty-dirs.ps1) - removes empty subfolders within the given directory tree * [search-files.ps1](Scripts/search-files.ps1) - searches the given pattern in the given files * [scan-ports.ps1](Scripts/scan-ports.ps1) - scans the network for open/closed ports * [send-email.ps1](Scripts/send-email.ps1) - sends an email message diff --git a/Scripts/remove-empty-dirs.ps1 b/Scripts/remove-empty-dirs.ps1 new file mode 100755 index 00000000..5cb1fe78 --- /dev/null +++ b/Scripts/remove-empty-dirs.ps1 @@ -0,0 +1,43 @@ +#!/snap/bin/powershell +<# +.SYNTAX ./remove-empty-dirs.ps1 [] +.DESCRIPTION removes empty subfolders within the given directory tree +.LINK https://github.com/fleschutz/PowerShell +.NOTES Author: Markus Fleschutz / License: CC0 +#> + +param($DirTree = "") + +try { + if ($DirTree -eq "" ) { + $DirTree = read-host "Enter the path to the directory tree" + } + + $Folders = @() + foreach ($Folder in (Get-ChildItem -path "$DirTree" -Recurse | Where { $_.PSisContainer })) { + $Folders += New-Object PSObject -Property @{ + Object = $Folder + Depth = ($Folder.FullName.Split("\")).Count + } + } + $Folders = $Folders | Sort Depth -Descending + + $Deleted = @() + foreach ($Folder in $Folders) + { + if ($Folder.Object.GetFileSystemInfos().Count -eq 0) { + $Deleted += New-Object PSObject -Property @{ + Folder = $Folder.Object.FullName + Deleted = (Get-Date -Format "hh:mm:ss tt") + Created = $Folder.Object.CreationTime + 'Last Modified' = $Folder.Object.LastWriteTime + Owner = (Get-Acl $Folder.Object.FullName).Owner + } + Remove-Item -Path $Folder.Object.FullName -Force + } + } + exit 0 +} catch { + write-error "ERROR in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])" + exit 1 +} diff --git a/Scripts/speak-german.ps1 b/Scripts/speak-german.ps1 old mode 100644 new mode 100755