Mit PowerShell Änderungsdatum aller Dateien auf heute setzen gebündelt in einen Befehl?
Hallo,
ich habe es schon mit Suchfunktion und Google geschafft, das Änderungsdatum aller Dateien im "Testordner" 5 Jahre (per AddHours) zurückzudrehen. Allerdings über separates Skript als Umweg.
Wie kann ich das Datum nun einfach auf das Aktuelle ändern? Bestimmt ist das nicht schwer und ich bin sehr nahe dran, aber ich kapiere es einfach nicht.
Ich weiß, es sieht nicht schön aus usw usw., aber wie gesagt, ich möchte jetzt nicht ein PowerShell Freak werden, sondern eben nur diese eine Aufgabe damit lösen.
Vielen Dank im Voraus!
LG
Peter
ich habe es schon mit Suchfunktion und Google geschafft, das Änderungsdatum aller Dateien im "Testordner" 5 Jahre (per AddHours) zurückzudrehen. Allerdings über separates Skript als Umweg.
Wie kann ich das Datum nun einfach auf das Aktuelle ändern? Bestimmt ist das nicht schwer und ich bin sehr nahe dran, aber ich kapiere es einfach nicht.
PowerShell.exe -Executionpolicy ByPass -Command "& 'script.ps1'"
script.ps1:
dir "C:\Testordner\*.*" -recurse | ?{!$_.PSIsContainer} | %{$_.LastWriteTime = (get-date $_.LastWriteTime).AddHours(-43200); $_.CreationTime = $_.LastWriteTime}
Ich weiß, es sieht nicht schön aus usw usw., aber wie gesagt, ich möchte jetzt nicht ein PowerShell Freak werden, sondern eben nur diese eine Aufgabe damit lösen.
Vielen Dank im Voraus!
LG
Peter
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 315739
Url: https://administrator.de/forum/mit-powershell-aenderungsdatum-aller-dateien-auf-heute-setzen-gebuendelt-in-einen-befehl-315739.html
Ausgedruckt am: 18.04.2025 um 08:04 Uhr
2 Kommentare
Neuester Kommentar
Hallo,
Du schreibst,
vor 5 Stunden = Jetzt minus 5 Stunden, wie erhalte ich die Aktuelle Uhrzeit?
Antwort: Indem du das "minus 5 Stunden weg lässt.
Übersetzt in Code also folgendes:
Anstelle von schreibst du einfach .
Also so:
Ich weiß, es sieht nicht schön aus usw usw., aber wie gesagt, ich möchte jetzt nicht ein PowerShell Freak werden, sondern eben nur diese eine Aufgabe damit lösen.
Schade eigentlich, PowerShell könnte dir noch so viele male die Arbeit erleichtern. Wenn du nicht gleich die Kurzform verwenden willst, sondern mit der ausgeschriebenen Form anfängst wird es auch verständlicher (lesbarer):
oder als Pseudocode:
Mit freundlichen Grüßen,
agowa338
P. S. Das "$_.CreationTime = $_.LastWriteTime" kannst du in "$_.CreationTime = Get-Date" änder, hat den gleichen Effekt und ist weniger verwirrend.
Wenn du aber das Aktuelle Änderungsdatum als Erstellungsdatum speichern willst und anschießend das Änderungsdatum auf heute setzen, musst du die beiden teile austauschen.
Zitat von @Peter32:
ich habe es schon mit Suchfunktion und Google geschafft, das Änderungsdatum aller Dateien im "Testordner" 5 Jahre (per AddHours) zurückzudrehen. Allerdings über separates Skript als Umweg.
Nur so, es gibt auch AddYears => ".AddYears(-5)"ich habe es schon mit Suchfunktion und Google geschafft, das Änderungsdatum aller Dateien im "Testordner" 5 Jahre (per AddHours) zurückzudrehen. Allerdings über separates Skript als Umweg.
Wie kann ich das Datum nun einfach auf das Aktuelle ändern? Bestimmt ist das nicht schwer und ich bin sehr nahe dran, aber ich kapiere es einfach nicht.
Du hast dir deine Frage doch schon selbst beantwortet.Du schreibst,
vor 5 Stunden = Jetzt minus 5 Stunden, wie erhalte ich die Aktuelle Uhrzeit?
Antwort: Indem du das "minus 5 Stunden weg lässt.
PowerShell.exe -Executionpolicy ByPass -Command "& 'script.ps1'"
>
> script.ps1:
> dir "C:\Testordner\*.*" -recurse | ?{!$_.PSIsContainer} | %{$_.LastWriteTime = (get-date $_.LastWriteTime).AddHours(-43200); $_.CreationTime = $_.LastWriteTime}
Anstelle von
(get-date $_.LastWriteTime).AddHours(-43200)
get-date
Also so:
dir "C:\Testordner\*.*" -recurse | ?{!$_.PSIsContainer} | %{$_.LastWriteTime = get-date; $_.CreationTime = $_.LastWriteTime}
Ich weiß, es sieht nicht schön aus usw usw., aber wie gesagt, ich möchte jetzt nicht ein PowerShell Freak werden, sondern eben nur diese eine Aufgabe damit lösen.
Get-ChildItem "C:\Testordner\*.*" -Recurse | Where-Object { -not $_.PSIsContainer } | ForEach-Object{ $_.LastWriteTime = Get-Date; $_.CreationTime = $_.LastWriteTime }
Rufe alle Dateien und Ordner unterhalb von "C:\Testordner\*.*" ab. | Welche nicht Ordner sind. | Führe für jedes Element folgendes aus { Setze letztes Änderungsdatum auf aktuelles Datum; und Setze Erstellungsdatum auf Letzes Änderungsdatum (was jetzt aber auch das Aktuelle Datum ist.) }
Mit freundlichen Grüßen,
agowa338
P. S. Das "$_.CreationTime = $_.LastWriteTime" kannst du in "$_.CreationTime = Get-Date" änder, hat den gleichen Effekt und ist weniger verwirrend.
Wenn du aber das Aktuelle Änderungsdatum als Erstellungsdatum speichern willst und anschießend das Änderungsdatum auf heute setzen, musst du die beiden teile austauschen.