Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
PowerShell Skript beim Löschen 'ja, alle' automatisieren
- Ersteller ArrorRT
- Erstellt am
PHuV
Banned
- Registriert
- März 2005
- Beiträge
- 14.219
Was ist ein "klassischer Link" bei Dir? Im Prinzip sind die meisten verwendeten Benutzerlinks ausschließlich Symbolische Links.
Spielt keine Rolle, da sie alle nur auf ein Verzeichnis oder Datei verweisen, und im Fall von Windows sogar separat gespeichert werden, so daß kein Datenblock verbraucht wird. Das ist quasi nur ein Referenz oder Verknüpfung.
Spielt keine Rolle, da sie alle nur auf ein Verzeichnis oder Datei verweisen, und im Fall von Windows sogar separat gespeichert werden, so daß kein Datenblock verbraucht wird. Das ist quasi nur ein Referenz oder Verknüpfung.
Zuletzt bearbeitet:
Maviapril2
Lt. Commander
- Registriert
- Nov. 2008
- Beiträge
- 1.521
Ja, kann ich bestätigen, da ich über ein ähnliches Skript Symlinks lösche
sehe ich genauso wie du. Wahrscheinlich ist es wirklich nur ein Edge-Case (kommt auf die Struktur des Backups an), aber theoretisch würde ein alter Ordner rekursiv gelöscht, der potentielle neue Daten enthält.eweu schrieb:Ich verstehe nicht wirklich, wo hier das Missverständnis liegt, der TE hat halt keine Auskunft über die genaue Ordnerstruktur gegeben. Deine Lösung würde Ordner auswählen, mit einem Timestamp älter als 30 Stunden und diesen löschen, unabhängig davon, welchen Timestamp potenzielle Files in Unterordnern dieses Ordners haben, die eben neuer sein können als der Timestamp des Überordners. Somit werden in diesem Fall Files gelöscht, die weniger alt als 30 Stunden sind und der TE sagt er will nur Files löschen, die älter als 30 Stunden sind. Das ist doch ein offensichtliches Problem, oder etwa nicht? Oder was übersehe ich deiner Meinung nach?
Zum testen: ein alten Testordner mit ner alten und ner neuen Datei, neben dem Orner ebenfalls ne neue und ne alte Datei.
PowerShell:
Get-ChildItem -Recurse | select FullName,CreationTime
FullName CreationTime
-------- ------------
C:\Users\x\test12\testdir 11.02.2022 01:00:00
C:\Users\x\test12\alt 12.01.2022 01:00:00
C:\Users\x\test12\test2 26.09.2022 07:54:39
C:\Users\x\test12\testdir\neu 26.09.2022 08:08:31
C:\Users\x\test12\testdir\test1 11.01.2022 01:00:00
PowerShell:
Get-ChildItem -Recurse | Where CreationTime -lt (Get-Date).AddHours(-30) | Remove-Item -whatif
Bestätigung
Das Element unter "Microsoft.PowerShell.Core\FileSystem::C:\Users\x\test12\testdir" verfügt über untergeordnete
Elemente, und der Recurse-Parameter wurde nicht angegeben. Wenn Sie fortfahren, werden mit dem Element auch alle
untergeordneten Elemente entfernt. Möchten Sie den Vorgang wirklich fortsetzen?
[J] Ja [A] Ja, alle [N] Nein [K] Nein, keine [H] Anhalten [?] Hilfe (Standard ist "J"):
WhatIf: Ausführen des Vorgangs "Verzeichnis entfernen" für das Ziel "C:\Users\x\test12\testdir".
WhatIf: Ausführen des Vorgangs "Datei entfernen" für das Ziel "C:\Users\x\test12\alt".
WhatIf: Ausführen des Vorgangs "Datei entfernen" für das Ziel "C:\Users\x\test12\testdir\test1".
der Befehl würde also den gesamten Ordner "testdir" löschen.
PowerShell:
Get-ChildItem -Recurse -File | Where CreationTime -lt (Get-Date).AddHours(-30) | Remove-Item -whatif
WhatIf: Ausführen des Vorgangs "Datei entfernen" für das Ziel "C:\Users\x\test12\alt".
WhatIf: Ausführen des Vorgangs "Datei entfernen" für das Ziel "C:\Users\x\test12\testdir\test1".
Dieser Befehl hingegen löscht nur Dateien, braucht auch keine Bestätigung.
im Zweifel also erst einmal nur Dateien löschen lassen und anschließend leere Ordner löschen.