benötige Hilfe bei Powershell Script: alle Ordner inkl. Dateien löschen
- Holgi
- Guru
- Beiträge: 3098
- Registriert: 12.05.2018, 12:33
- Hat sich bedankt: 392 Mal
- Danke erhalten: 509 Mal
- Gender:
benötige Hilfe bei Powershell Script: alle Ordner inkl. Dateien löschen
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):
Kann man die Zeile
noch verallgemeinern? (aktueller User)?
Wie würde das Ganze aussehen, wenn man es ohne Powershell bewerkstelligen wollte?
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
}
}
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
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
- Holgi
- Guru
- Beiträge: 3098
- Registriert: 12.05.2018, 12:33
- Hat sich bedankt: 392 Mal
- Danke erhalten: 509 Mal
- Gender:
Re: benötige Hilfe bei Powershell Script: alle Ordner inkl. Dateien löschen
so, habs jetzt gerade einigermaßen selbst hinbekommen.
Mein Script (Teil einer komplexen cmd-Batch) sieht so aus:
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.
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"
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
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
-
- Senior
- Beiträge: 435
- Registriert: 17.12.2016, 20:37
- Hat sich bedankt: 15 Mal
- Danke erhalten: 70 Mal
- Gender:
Re: benötige Hilfe bei Powershell Script: alle Ordner inkl. Dateien löschen
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" 
Also Dateien nach einem Neustart kann man folgendermaßen löschen:
Registrypfad
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...

Also Dateien nach einem Neustart kann man folgendermaßen löschen:
Registrypfad
Code: Alles auswählen
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager
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.
Wenn die Sonne der Intelligenz tief steht, wachsen auch geistigen Zwergen lange Schatten 

- Holgi
- Guru
- Beiträge: 3098
- Registriert: 12.05.2018, 12:33
- Hat sich bedankt: 392 Mal
- Danke erhalten: 509 Mal
- Gender:
Re: benötige Hilfe bei Powershell Script: alle Ordner inkl. Dateien löschen
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.Jens1976 hat geschrieben: 10.07.2023, 17:42 Das geht auch nicht, weil das Script ja selber noch läuft.
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
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
-
- Senior
- Beiträge: 435
- Registriert: 17.12.2016, 20:37
- Hat sich bedankt: 15 Mal
- Danke erhalten: 70 Mal
- Gender:
Re: benötige Hilfe bei Powershell Script: alle Ordner inkl. Dateien löschen
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...
Wenn die Sonne der Intelligenz tief steht, wachsen auch geistigen Zwergen lange Schatten 
