PowerShell: Ändern Sie den Zeitstempel (ERSTELLUNGSDATUM) einer Datei oder eines Ordners
Für die PowerShell-Befehle für Windows 10, stoße ich auf ein seltsames Verhalten.
Ändern einer Datei, Datum der Erstellung, die ich benutze:
Get-ChildItem C:\testFile1.txt | % {$_.CreationTime = '01/11/2005 06:00:36'}
Ändern einen Ordner mit Datum angelegt, die ich verwenden:
Get-Item C:\testFolder1 | % {$_.CreationTime = '01/11/2004 22:13:36'}
Diese 2 Befehle funktionieren gut auf einer regelmäßigen basis, auf der Systempartition C:\ oder auf dem desktop.
Die Geschichte ist anders, wenn der Ordner existiert auf einer externen USB-flash-Laufwerk.
(P. S. Den Befehl zum ändern einer Datei Zeitstempel bleibt immer noch arbeiten auf dem externen USB-flash-Laufwerk.)
Angenommen, ich versuche, das Datum zu ändern erstellt einen Ordner (keine Datei) auf eine externe USB-flash-Laufwerk:
Get-Item U:\testFolder1 | % {$_.CreationTime = '01/11/2002 06:00:36'}
Bekomme ich diese Fehlermeldung:
Ausnahme der Einstellung "CreationTime": "Der Prozess kann nicht auf die Datei zugreifen 'U:\testFolder1" weil es wird von einem anderen Prozess verwendet wird." Bei Zeile:1 char:31 + ... et-Element U:\testFolder1 | % {$_.CreationTime = '01/11/2002 06:00:36'} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], SetValueInvocationException + FullyQualifiedErrorId : ExceptionWhenSetting
Graben weiter, merke ich, dass der Prozess Windows 10 Datei-Explorer, die verhindert, dass mir die von der änderung des Zeitstempels. Solange ich nicht öffnen-Datei-Explorer kann ich PowerShell verwenden, um das Datum zu ändern erstellt einen Ordner auf dem USB-flash-Laufwerk.
Ist es trotzdem gerne .Dispose() beenden Sie Windows 10 s Datei-Explorer sperren der Ordner ohne die Notwendigkeit, Datei-Explorer, jedes mal?
Directory.SetCreationTime()
direkt: [System.IO.Directory]::SetCreationTime('U:\testFolder1', '01/11/2002 06:00:36')
Dank Mathias aber das ist, was ich habe:
PS U:\> [System.IO.Directory]::SetCreationTime('U:\testFolder1', '01/11/2000 06:00:36')
Ausnahme beim aufrufen von "SetCreationTime" mit "2" argument(s): "Der Prozess kann nicht auf die Datei zugreifen 'U:\testFolder1" weil es wird von einem anderen Prozess verwendet wird." Bei Zeile:1 Zeichen:1 + [System.IO.Directory]::SetCreationTime('U:\testFolder1', '01/11/2000 ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : IOException
InformationsquelleAutor Bart Simpson | 2016-08-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe eine Funktion, die ich auf der hand halten, verwendet Handle.exe von SysInternals zu finden, was Prozess einen lock auf eine Datei, und dann versucht, ihn zu töten, dass der Prozess, der die Sperre auf die Datei.
Sollten Sie in der Lage sein, leiten Sie Ihre Dateien, und es wird zu entsperren alle, die haben eine Sperre, und dann pass das file-Objekt, nach unten das Rohr.
Ich habe nicht gesagt, dass es getötet der Prozess, nicht zitieren, Dinge aus dem Kontext so. Ich habe ausdrücklich erklärt, "versucht, ihn zu töten, dass der Prozess, der die Sperre auf der Datei". Sie nicht immer wollen, Sie zu töten den Prozess, der die Datei öffnen und handhaben, wie in OP ' s Fall, wo es ist Explorer.exe hatte die Datei ist gesperrt.
InformationsquelleAutor TheMadTechnician