benötige Hilfe bei Powershell Script: alle Ordner inkl. Dateien löschen

Probleme mit dem Desktop oder dem Datei Explorer?
Antworten
Benutzeravatar
Holgi
Elite
Elite
Beiträge: 2226
Registriert: 12.05.2018, 12:33
Hat sich bedankt: 231 Mal
Danke erhalten: 312 Mal
Gender:

benötige Hilfe bei Powershell Script: alle Ordner inkl. Dateien löschen

Beitrag von Holgi » 10.07.2023, 10:39

Hallo Mitstreiter!
Könnte mir jemand von euch Unterstützung bei einem Powershell Script leisten?
Dieses soll alle Ordner und Dateien innerhalb vorgegebener Ordner löschen. Ebenfalls sollen leere Ordner gelöscht werden.
Kurz gesagt: es soll total aufgeräumt werden. Läuffähig unter Windows 11.
Ein Script für leere Ordner löschen habe ich schon mal gefunden.
Vlt. kann da jemand so aufbohren, dass auch nicht leere Ordner gelöscht werden?
Ich weiß: es birgt Gefahren. Dessen bin ich mir bewußt.
Das Script soll sogar ohne Rückfragen die Ordner und Dateien löschen! Inkl. Systemdateien. Ausnahme: die desktop.ini in $rootPath

Hier mal der Ansatz (für leere Ordner):

Code: Alles auswählen

# Root-Verzeichnis, welches durchlaufen werden soll
$rootPath = "C:\Users\Administrator\Documents"

# Alle Elemente im Root-Verzeichnis REKURSIV auslesen
foreach($childItem in (Get-ChildItem $rootPath -Recurse))
{
	# wenn es sich um einen Ordner handelt UND dieser leer ist
	if( ($childItem.PSIsContainer) -and (!(Get-ChildItem -Recurse -Path $childItem.FullName)))
	{
		# leeren Ordner löschen
		Remove-Item $childItem.FullName -Confirm:$false
	}
}
Kann man die Zeile

Code: Alles auswählen

$rootPath = "C:\Users\Administrator\Documents"

noch verallgemeinern? (aktueller User)?
Wie würde das Ganze aussehen, wenn man es ohne Powershell bewerkstelligen wollte?
PDF24 angepasste Installation (nur PDF Druckertreiber) per Script: viewtopic.php?t=30284
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114

Tante Google

benötige Hilfe bei Powershell Script: alle Ordner inkl. Dateien löschen

Beitrag von Tante Google » 10.07.2023, 10:39


Benutzeravatar
Holgi
Elite
Elite
Beiträge: 2226
Registriert: 12.05.2018, 12:33
Hat sich bedankt: 231 Mal
Danke erhalten: 312 Mal
Gender:

Re: benötige Hilfe bei Powershell Script: alle Ordner inkl. Dateien löschen

Beitrag von Holgi » 10.07.2023, 15:02

so, habs jetzt gerade einigermaßen selbst hinbekommen.
Mein Script (Teil einer komplexen cmd-Batch) sieht so aus:

Code: Alles auswählen

taskkill /F /IM explorer.exe 1>NUL 2>NUL & start explorer 1>NUL 2>NUL
cd \
powershell Remove-item -Path "$env:LOCALAPPDATA\Temp\*" -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:LOCALAPPDATA\OneDrive" -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:LOCALAPPDATA\Microsoft\Excel" -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:LOCALAPPDATA\Microsoft\Office" -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:LOCALAPPDATA\Microsoft\Word" -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:LOCALAPPDATA\Microsoft\OneDrive" -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:LOCALAPPDATA\0install.net" -force -Confirm:$false -Recurse


powershell Remove-item -Path "$env:APPDATA\Microsoft\Excel" -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:APPDATA\Microsoft\Office" -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:APPDATA\Microsoft\PowerPoint" -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:APPDATA\Microsoft\Office" -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:APPDATA\Microsoft\Word" -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:APPDATA\0install.net" -force -Confirm:$false -Recurse


powershell Remove-item -Path "$env:Public\Pictures\*" -exclude desktop.ini -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:Public\Music\*" -exclude desktop.ini -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:Public\Videos\*" -exclude desktop.ini -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:Public\Documents\*" -exclude desktop.ini -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:Public\Desktop\*" -exclude desktop.ini -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:Public\Downloads\*" -exclude desktop.ini -force -Confirm:$false -Recurse

powershell Remove-item -Path "$env:HOMEPATH\Pictures\*" -exclude desktop.ini -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:HOMEPATH\Music\*" -exclude desktop.ini -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:HOMEPATH\Videos\*" -exclude desktop.ini -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:HOMEPATH\Documents\*" -exclude desktop.ini -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:HOMEPATH\Desktop\*" -exclude desktop.ini -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:HOMEPATH\OneDrive\*" -exclude desktop.ini -force -Confirm:$false -Recurse
powershell Remove-item -Path "$env:HOMEPATH\Downloads\*" -exclude desktop.ini -force -Confirm:$false -Recurse

powershell Remove-item -Path "C:\PerfLogs" -force -Confirm:$false -Recurse

(goto) 2>nul&rd /s /q "%~dp0"
Das Einzige was noch stört ist, dass der Ordner und Unterordner, in welchem das Script ausgeführt wird (sagen wir mal %homepath%\Downloads\Test1\Test\ selbst nicht gelöscht werden. Weiß nicht, ob das überhaupt möglich ist.
PDF24 angepasste Installation (nur PDF Druckertreiber) per Script: viewtopic.php?t=30284
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114

Jens1976
Meister
Meister
Beiträge: 362
Registriert: 17.12.2016, 20:37
Hat sich bedankt: 13 Mal
Danke erhalten: 42 Mal
Gender:

Re: benötige Hilfe bei Powershell Script: alle Ordner inkl. Dateien löschen

Beitrag von Jens1976 » 10.07.2023, 17:42

Das geht auch nicht, weil das Script ja selber noch läuft. Dann müßte es sich ja selber löschen. Eventuell könnte man das so hinbiegen, das dieser Pfad samt Inhalt beim nächsten Neustart automatisch gelöscht wird. Da läuft das Script ja nicht, also ist die Datei auch nicht geschützt...
Eventuell könnte man da nen Aufruf in der Registry plazieren im "RunOnce" :kopfkratz:
Also Dateien nach einem Neustart kann man folgendermaßen löschen:
Registrypfad

Code: Alles auswählen

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager
Dort einen neuen Eintrag erstellen "Neu> Wert der mehrteiligen Zeichenfolge" im Kontextmenü und folgendermaßen benennen: "PendingFileRenameOperations". Nicht von dem "Rename" irritieren lassen...
Das dann anklicken um die Werteigenschaften zu laden. "\??\Dateipfad" einfügen. "Dateipfad" ist ein Platzhalter. Das ganze kann man dann ja vom Script aus per "Reg add" einfügen. Ob das auch mit Ordnern funktioniert, kann ich nicht sagen, müßte man mal testen...
Zuletzt geändert von Jens1976 am 10.07.2023, 18:47, insgesamt 1-mal geändert.

Benutzeravatar
Holgi
Elite
Elite
Beiträge: 2226
Registriert: 12.05.2018, 12:33
Hat sich bedankt: 231 Mal
Danke erhalten: 312 Mal
Gender:

Re: benötige Hilfe bei Powershell Script: alle Ordner inkl. Dateien löschen

Beitrag von Holgi » 10.07.2023, 18:04

Jens1976 hat geschrieben: 10.07.2023, 17:42 Das geht auch nicht, weil das Script ja selber noch läuft.
Tja, grds. bin ich deiner Meinung. Aber so wie das Script jetzt läuft, wird das ausführende Script (eine *.cmd) ja selbst gelöscht.
Dies geschieht wohl durch die Zeile

Code: Alles auswählen

(goto) 2>nul&rd /s /q "%~dp0"
,
oder bereits durch

Code: Alles auswählen

powershell Remove-item -Path "$env:HOMEPATH\Downloads\*" -exclude desktop.ini -force -Confirm:$false -Recurse
.
Da müßte ich noch mal herausfinden.
Es werden nur nicht die Ordner (Unterordner), in denen sich das Script befindet (befand) gelöscht.
Sind dann zwar nur zwei leere Ordner (bei mir im Ordner User\Downloads), aber wäre halt schön, wenn man die noch wegbekäme.
PDF24 angepasste Installation (nur PDF Druckertreiber) per Script: viewtopic.php?t=30284
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114

Jens1976
Meister
Meister
Beiträge: 362
Registriert: 17.12.2016, 20:37
Hat sich bedankt: 13 Mal
Danke erhalten: 42 Mal
Gender:

Re: benötige Hilfe bei Powershell Script: alle Ordner inkl. Dateien löschen

Beitrag von Jens1976 » 10.07.2023, 18:12

Eventuell gehts ja mit dem Registrytrick oberhalb. Mit ein bissle Glück kannst da bei einem Neustart wowohl die Ordner als auch gleich das Script dadrin löschen...

Antworten