Wie kann ich den Zeitstempel für eine Datei über die Befehlszeile auf ein bestimmtes Datum setzen?
Meine spezifische Situation ist Windows 7.
Sie sollten wahrscheinlich Ihre Frage klarstellen und angeben, dass Sie den neuen Zeitstempel auswählen möchten. Bei den beiden aktuellen Antworten wird davon ausgegangen, dass Sie nach einem Windows-Port des Unix-Befehls "touch" suchen, der den Zeitstempel einer Datei auf die aktuelle Uhrzeit setzt.
William Jackson vor 13 Jahren
1
Ich habe Sysinternals durchgesehen, und ich bin mir ziemlich sicher, dass sie dafür kein Werkzeug haben. Sie sollten die Programme ausprobieren, auf die von http://superuser.com/questions/135901/how-to-modify-timestamp-in-a-dll-or-exe verwiesen wird
William Jackson vor 13 Jahren
0
@ William Jackson geändert, danke dafür. Wenn es sich wirklich um einen Port des Unix-Befehls "touch" handelt, könnte ich das Datum angeben. http://en.wikipedia.org/wiki/Touch_(Unix). Mit der automatischen Verknüpfung ist jedoch etwas nicht in Ordnung. Vergewissern Sie sich, dass Sie beide Klammern erhalten.
Joseph Hansen vor 13 Jahren
0
Ich kann nicht glauben, dass ich mir nie die Mühe gemacht habe, "Man Touch" zu lesen. Du hast mir etwas Neues beigebracht.
William Jackson vor 13 Jahren
1
Duplikat von [Windows-Äquivalent des Linux-Befehls 'touch'?] (Http://superuser.com/questions/10426/windows-equivalent-of-the-linux-command-touch)
Scott vor 8 Jahren
0
Eine geringfügige, rekursive und etwas kürzere Variante, die jedoch weniger lesbar ist: "gci -rec |% {$ _. LastWriteTime = ($ _. LastAccessTime = ($ _. CreationTime = (get-date" 2011-09-14T07: 10:00 ")))}"
codybartfast vor 13 Jahren
8
Für Leute, die nicht viel über Powershell wissen, müssen Sie den Dateinamen nach Get-Item setzen. Sie können die Zeichenfolge auch nach Get-Date weglassen, um das Attribut auf das aktuelle Datum / die aktuelle Uhrzeit festzulegen, wie das Standardverhalten des Berührungsbefehls. Schließlich können Sie diesen Code als Argument an den Powershell-Befehl übergeben, damit dieser nur aus einer vorhandenen Batchdatei ausgeführt wird. Beispiel: `Powershell $ (Get-Item aaa.csv) .lastwritetime = $ (Get-Date)`
sjbotha vor 11 Jahren
7
Was ist, wenn ich dies für jede Datei in einem Verzeichnis tun möchte?
CodyBugstein vor 8 Jahren
0
Suchen Sie nach "Powershell Every File". Sie können Fragen wie diese finden: http://stackoverflow.com/q/16804265/756329 und http://stackoverflow.com/q/181036/756329
Joseph Hansen vor 8 Jahren
0
Das Datums- und Zeitformat entspricht nicht dem Befehl, sondern dem systemweiten Format (in meinem System war dies also TT / MM / JJJ).
Martin Argerami vor 6 Jahren
1
Die Kommas geben an, dass der Parameter Destination nicht vorhanden ist.
Kannst du erklären, wie das funktioniert? Was ist das "+"? Woher weiß ich, an welchem Datum es eingestellt ist?
Joseph Hansen vor 13 Jahren
1
@josmh Überprüfen Sie den Dokumentationslink für Details. Der Zeitstempel wird auf die aktuelle Uhrzeit gesetzt, wenn Sie den Befehl ausführen. Wollen Sie damit sagen, dass Sie den Zeitstempel in eine von Ihnen gewählte arbritische Zeit ändern möchten?
William Jackson vor 13 Jahren
1
Ich sehe nicht, wie ich dadurch ein neues Datum für die Datei auswählen kann?
Joseph Hansen vor 13 Jahren
7
Das Hauptproblem dabei ist, wenn sich die Datei nicht im aktuellen Verzeichnis befindet. Die Datei wird in das aktuelle Verzeichnis kopiert, anstatt sie an der richtigen Stelle zu "berühren".
Kasey Speakman vor 7 Jahren
0
@KaseySpeakman - Dieser Befehl setzt voraus, dass er sich im aktuellen Verzeichnis befindet. Verwenden Sie "pushd FILEDIR" vor dem Befehl und "Popd" danach
Tydaeus vor 6 Jahren
1
@JosephHansen Dies funktioniert durch Kopieren der Datei über sich selbst, was dazu führt, dass die Datei "jetzt" geändert wird.
Tydaeus vor 6 Jahren
0
Zu Ihrer Information, "Optimierungen" in Vista + bedeutet, dass der Zeitstempel je nach Kontext möglicherweise nicht wie erwartet aktualisiert wird. Es scheint gut zu funktionieren, wenn dies der einzige Befehl ist, den Sie ausführen. Wenn Ihr Skript jedoch mehr tut, bleibt der Zeitstempel möglicherweise unberührt.
Tydaeus vor 6 Jahren
0
18
boot13
Nirsoft zur Rettung: Testen Sie das Freeware-Tool nircmd . Es ist eine Reihe nützlicher Tools in einem kleinen Befehlszeilenprogramm. Einer der Befehle können Sie einen oder beide angeben, erstellt Zeit und geänderte Zeit, wie folgt aus :
Auch wenn Sie die Zeit von einer Datei in eine andere übertragen möchten, funktioniert Clonefiletime filefrom von fileto am besten!
JasonXA vor 9 Jahren
1
Keine Befehlszeile, aber für die Massenbearbeitung günstiger: [BulkFileChanger] (https://www.nirsoft.net/utils/bulk_file_changer.html) von Nirsoft
SaAtomic vor 6 Jahren
0
13
Joseph Hansen
Verwenden Sie Cygwin, um den Zeitstempel von test.txt auf den 31. Januar 2000 um 00: 01.00 Uhr festzulegen:
touch -t 200001310001.00 test.txt
Dies wird mit einem ungültigen Datumsformatfehler zurückgegeben.
ziggy vor 11 Jahren
0
@ziggy stellen Sie sicher, dass Sie alle Nullen bekommen ...
Joseph Hansen vor 9 Jahren
0
Dies funktionierte perfekt für mich `touch -t 201608221400 filename`, um es auf 22.08.2016 14:00:00 einzustellen.
SebastianH vor 7 Jahren
2
Die Win32 Console Toolbox enthält ein Dienstprogramm namens "touch", mit dem Sie die Zeiten für eine oder mehrere Dateien ändern können. Ich glaube, dass es nur mit US-Format-Zeiten funktioniert.