Ändern Sie das "Änderungsdatum" eines Ordners (in möglicherweise Powerhell)

1749
poupou

Wenn ich einen Windows Server 2003-Rechner zwangsweise herunterfahre (ich habe keine Wahl), ändern die Ordner in einem bestimmten Verzeichnis alle ihr 'Änderungsdatum' auf das aktuelle Datum.

Glücklicherweise befinden sich die Dateien in jedem dieser Ordner mit dem korrekten Änderungsdatum.

Eine dieser Dateien, mit denen ich das "geänderte (oder erstellte) Datum" kopieren möchte, ist eine .jdf-Datei, die alle Ordner enthalten.

Ich brauche Hilfe, um ein Skript in PowerSell zu erstellen.

Ich habe dieses PS1-Skript gefunden, das fast den Job macht:

Get-ChildItem $root | Where-Object {$_.PSIsContainer} | Foreach-Object{  # get the oldest file for the current directory object $oldest = Get-ChildItem $_.FullName | Sort-Object LastWriteTime | Select-Object LastWriteTime -Last 1  if($oldest) { # oldest object found, set current directory LastWriteTime $_ | Set-ItemProperty -Name CreationTime -Value $oldest.LastWriteTime  $_ | Set-ItemProperty -Name LastWriteTime -Value $oldest.LastWriteTime } else { # current directory is empty, directory LastWriteTime is left unchanged Write-Warning "Directory '$($_.FullName)' is empty, skiping..." } } 

Das Problem ist, dass das zuletzt geänderte Objekt in den Ordnern manchmal Unterordner ist, die auch das aktuelle Datum als 'Änderungsdatum' erhalten. Wie kann ich die Dateien im Ordner und nicht die Ordner anzeigen lassen?

0
Ihr Ziel ist für mich ein wenig unklar: Was soll das gewünschte Skript genau machen? (Bitte nicht kommentieren; bearbeiten Sie Ihre Frage eher.) Der Datums- und Zeitstempel für einen bestimmten Ordner ändert sich jedoch, wenn ein Objekt (Datei oder Ordner) darin erstellt oder gelöscht wird. JosefZ vor 8 Jahren 0
@JosefZ: Ich habe gerade den Beitrag bearbeitet und ein Skript hinzugefügt. Ich hoffe es ist jetzt klarer. Vielen Dank poupou vor 8 Jahren 0

1 Antwort auf die Frage

0
JosefZ

Während Get-ChildItem $root -directorygibt das gleiche Ergebnis wie

Get-ChildItem $root | Where-Object {$_.PSIsContainer} 

du könntest es versuchen (ich weiß keine PSverbose Syntax)

Get-ChildItem $root -file 

oder auch

gci $root -file 

Sie sind sich nicht sicher, ob Ihr Skriptrest verbessert werden muss ...

Ich habe versucht, "-directory" hinzuzufügen, ich bekomme eine Fehlermeldung: Get-ChildItem: Es wurde kein Parameter gefunden, der dem Parameternamen 'directory' entspricht. In Zeile: 1 Zeichen: 31 + Get-ChildItem $ root -Verzeichnis <<<< | Where-Object {$ _. PSIsContainer} | Foreach-Objekt { poupou vor 8 Jahren 0