Was verwenden Sie, wenn Sie das Datumsänderungsfeld einer Datei unter Windows aktualisieren möchten?
- Befehle, auf die über C ++, .NET, C # oder Windows (vorzugsweise Vista) zugegriffen werden kann
- Tools / Anwendungen vorzugsweise kostenlos und wenn möglich auch Open Source
Bearbeiten: Es gibt bereits eine Seite für Bewerbungen, auf die CheapScotsman hier hinweist .
Wenn jemand weiß, wie ich das über C ++, C #, WSH oder ähnliches machen kann, dann denke ich, dass alles andere in der verknüpften Frage behandelt wird.
windows
file-attributes
touch
facepalmd
quelle
quelle
REM.>a
Antworten:
Wenn Sie den Datumsstempel einer Datei mithilfe von Windows berühren möchten, geben Sie an der Eingabeaufforderung den folgenden Befehl ein:
(wo
filename.ext
ist der Name Ihrer Datei). Dies+,,
ist eine besondere Markierung, umcopy
anzuzeigen, dass das Datum und die Uhrzeit in der Datei einfach aktualisiert werden sollen :Bearbeiten Sie anhand von Kommentaren von Lumi und Justin: Fügen Sie diese in eine Batch-Datei ein, z. touch.cmd
Dies funktioniert auch, wenn sich die Datei nicht im aktuellen Verzeichnis befindet (getestet unter Windows 7).
quelle
copy
: technet.microsoft.com/en-us/library/bb490886.aspxtype touch.bat
ist@echo off
und nächste Zeilecopy /b %1 +,,
- setzen Sie es inC:\bin
oder was haben Sie für Ihre eigenen Skripte, und dann können Sie es wie verwendentouch myfile.txt
.copy /b Source+,, Source
- wobeiSource
der vollständige Pfad zur Datei angegeben wirdIch habe Unxutils verwendet und empfohlen, die native Win32-Ports vieler gängiger Unix-Dienstprogramme sind. Da drin ist ein
touch
Befehl.quelle
"test тест τεστ.txt"
touch
Befehls bedeuten . Es ist wie alles andere in Nix-Umgebungen, Sie können es entweder tun oder Sie können es tun oder Sie können es nicht, weil Sie keine Berechtigungen haben.Wenn Sie nur das Datum der letzten Änderung der Datei ändern möchten (was bei mir der Fall war):
quelle
gci -recu -inc "*.*" | % { $_.LastWriteTime = Get-Date }
file
wenn es nicht existiert.cmd
eingebaute Funktionen.AKTUALISIEREN
Gah! Dies funktioniert nicht bei schreibgeschützten Dateien, wohingegen dies
touch
funktioniert. Ich schlage vor:quelle
filename +,,
Syntax nicht unterstützt .@ Dash-Tom-Bang:
Hier ist Technets Erklärung des mysteriösen '+' und der Kommas:
Der Kopierbefehl unterstützt das Zusammenführen mehrerer Dateien in einer einzelnen Zieldatei. Da ein leeres Ziel nicht mit einem Leerzeichen an der Eingabeaufforderung angegeben werden kann, können zwei Kommas verwendet werden, um dies zu kennzeichnen.
Und dies ist die Technet-Referenz für Kopierbefehle : http://technet.microsoft.com/en-us/library/bb490886.aspx
quelle
Wenn Sie es wie Codierung selbst fühlen, bietet .NET die
File.SetLastAccessTime
,File.SetCreationTime
undFile.SetLastWriteTime
Methoden.quelle
Hier ist eine rekursive Version, die Powershell verwendet. Dadurch wird die letzte Änderungszeit für alle Dateien und Unterverzeichnisse sowie für Dateien in den Unterverzeichnissen dieses Verzeichnisses geändert
quelle
ls * -recurse | % { $_.LastWriteTime = Get-Date }
Das GnuWin32- Projekt verfügt über Windows-Ports der Gnu-Versionen der Unix-Befehlszeilendienstprogramme.
Es kommt als eine Reihe von separaten Paketen und Sie können nur die Befehle installieren, die Sie ohne andere Abhängigkeiten benötigen. Dafür
touch
bräuchten Sie das CoreUtils- Paket.quelle
cygwin
kommt mittouch
. Ich weiß, dass Sie erwähnt haben, dass Sie kein ganzes Framework installieren möchten, aber Cygwin ist recht leicht und kann über das DOS-Befehlsfenster aufgerufen werden, ohne dass die gesamte unix-artige Befehlszeile aktiviert ist.Sie können auch steuern, welche Tools installiert werden sollen, sodass Sie die
touch.exe
Datei einfach installieren und den Rest des Frameworks beibehalten können.quelle
Ich habe versucht, eine leere Datei in meinem Batch-Skript zu erstellen. Sie können dies verwenden:
quelle
echo pie>.gitignore
funktioniert - danke!.gitignore.
Sie also Folgendes ein und drücken Sie die Eingabetaste. Windows entfernt den abschließenden Zeitraum. Verrückt, aber es funktioniert.Hier ist ein einfaches Regfile, das ich geschrieben habe, um einen Rechtsklick auf "Touch" im Windows Explorer hinzuzufügen . Es wäre auch einfach, ein Skript zu erstellen, da es nur Folgendes aufruft:
quelle
copy nul some_file
, eine leere Datei zu erstellen (wofür ichtouch
am häufigsten sehe ).Native Win32-Ports für viele Unix-Befehle , einschließlich Touch.
Ich habe es schon einmal benutzt und es funktioniert gut - keine Installation, keine DLLs usw
quelle
Versuchen Sie dieses von CodeProject .
quelle
Sie können auch Cygwin installieren, das Ihnen Touch sowie eine Vielzahl anderer * NIX-Befehle bietet.
quelle
Es gibt Windows-Ports vieler Unix-Dienstprogramme. Schauen Sie sich unxutils oder GnuWin32- Projekte an.
quelle
Aus einer ähnlichen Frage zum Stack Overflow.
Zum Aktualisieren von Zeitstempeln (ohne die anderen Funktionen von
touch
) würde ich gehen mit:quelle
Wie wäre es mit CodeProject "Touch für Windows": http://www.codeproject.com/KB/applications/touch_win.aspx
bearbeiten; Dieselbe Frage wie hier: https://stackoverflow.com/questions/51435/windows-version-of-the-unix-touch-command/51439
quelle
von der Website:
quelle
Dieser Inhalt kann in einer Registrierungsdatei gespeichert werden. Dadurch wird ein Kontextmenü mit einem Rechtsklick für alle Dateien mit der Fähigkeit "Touch File" (getestet unter Windows 7) hinzugefügt. Kopieren Sie alle folgenden Zeilen in die Registrierungsdatei. Führen Sie die Datei aus und genehmigen Sie die Frage. Klicken Sie mit der rechten Maustaste auf eine beliebige Datei (oder mehrere Dateien). Die Option "Datei berühren" ist jetzt verfügbar.
quelle
Wenn Sie Git für ein oder mehrere Projekte verwenden, hat das auf
git-bash
Windows basierende mingw dentouch
Befehl. Ich möchte mich bei @ greg-hewgill dafür bedanken, dass ich darauf hingewiesen habe, dass es für Windows keine Hilfsprogramme gibt.quelle
in PowerShell versuchen:
NI
ist ein Alias des Cmdlets " New-Item ".quelle
ni
Befehl enthält, und möglicherweise beschreiben, was der Befehl bewirkt?New-Item
Cmdlet kann nicht zum Aktualisieren des Zeitstempels einer vorhandenen Datei verwendet werden.Speichern Sie Folgendes als touch.bat in Ihrem Ordner% windir% \ system32 oder fügen Sie den Ordner, in dem es gespeichert ist, Ihrer Umgebungsvariablen PATH hinzu:
Beispielnutzung:
Referenz: Microsoft KB 69581
quelle
Ich habe einen schnellen Weg gefunden, dies zu tun, wenn Sie vim installiert haben (nicht gut für große Dateien, öffnet die gesamte Datei und schließt sie dann ...)
Das "+" setzt ein Argument, um die folgenden Befehle auszuführen. "wq!" ist "schreiben, beenden, erzwingen". Dadurch wird die Datei geöffnet, gespeichert und unmittelbar danach geschlossen.
quelle
Ich wollte, dass die 'Touch'-Funktion des Klonens / Duplizierens der Datei ursprünglich aus einer anderen Datei stammt und aus einer Batch-Datei verwendet werden kann.
Ziehen Sie die Videodatei per Drag & Drop in die Batch-Datei, FFMPEG wird ausgeführt, und anschließend werden "Erstellungsdatum" und "Änderungsdatum" aus der Eingabedatei in die Ausgabedatei kopiert.
Dies schien zunächst einfach zu sein, bis Sie feststellen, dass Batch-Dateien schlecht mit Unicode-Dateinamen umgehen können, Inline-PowerShell die Dateinamensymbole durcheinander bringt und doppeltes Escape-Zeichen ein Albtraum ist.
Meine Lösung war, den 'Touch'-Teil zu einem separaten PowerShell-Skript zu machen, das ich' CLONE-FILE-DATE.ps1 'nannte und das Folgendes enthält:
Dann ist hier ein Beispiel für die Verwendung in meiner 'CONVERT.BAT'-Batchdatei:
Ich denke, dass die PowerShell lesbar ist, also erkläre ich nur die Batch-Sprache:
% ~ dp0 ist das aktuelle Verzeichnis der Batchdatei.
% ~ 1 ist der Pfad der Datei, die ohne Anführungszeichen auf dem Stapel abgelegt wird.
CHCP 65001> nul setzt Zeichen auf UTF-8 und schluckt die Ausgabe.
-ExecutionPolicy ByPass ermöglicht das Ausführen von PowerShell, ohne dass die globale Richtlinie geändert werden muss. Dadurch wird verhindert, dass Benutzer versehentlich Skripts ausführen .
quelle
Versuchen
fsutil file createnew new.txt 0
quelle
The FSUTIL utility requires that you have administrative privileges.
- und es verhält sich nicht wietouch
bei vorhandenen Dateien.Die fünf oben genannten Alternativen sowie drei weitere, hier nicht genannte, finden Sie unter SuperUser: "Windows Recursive Touch Command".
quelle
Dies hat etwas nichts mit der ursprünglichen Frage zu tun, aber ich finde dies unter Windows aufgrund der grafischen Benutzeroberfläche sehr nützlich.
Ich verwende das TouchPro-Dienstprogramm, das eine grafische Benutzeroberfläche bereitstellt (integriert in die Explorer-Shell):
http://www.jddesign.co.uk/products/touchpro/touchpro.htm
quelle
Wenn Sie den Befehl wirklich zur Verfügung haben möchten
touch
, können Sie ihn in eine Batch-Datei mit dem Namentouch.bat
einfügen und dort ablegenC:\Windows
:Einfach genug.
quelle
Die Unix-Leute haben das allgemeine Problem der Aktualisierung des Dateidatums einer beliebigen Datei mit dem Befehl touch behoben . Unter Windows ist jedoch in bestimmten Fällen manchmal eine einfachere Methode möglich.
Ich muss den Zeitstempel einer Anwendungsverknüpfung in Windows 8.1 aktualisieren, um Änderungen an der Hintergrundfarbe der Anwendungskachel sichtbar zu machen, siehe diese SO-Frage . Anstatt eines der oben genannten cleveren Tools zu implementieren, finde ich es einfacher, das Kommentarfeld der Verknüpfung zu bearbeiten. Die meisten Leute lassen dies leer, aber natürlich ist ein nützlicher Kommentar schnell erfunden. Und wenn ein Kommentar vorhanden ist, kann das Hinzufügen oder Entfernen eines letzten Punkts niemals schaden.
quelle
Ich weiß, dass dies eine alte Frage ist, ich habe gerade eine Berührung auf meinem Windows 10-System entdeckt. Ich habe Git von hier heruntergeladen und installiert (glaube ich) und es sieht so aus, als ob Touch und verschiedene andere Dienstprogramme im Ordner bin sind.
quelle