Windows-Äquivalent des Linux-Befehls 'touch'?

Was verwenden Sie, wenn Sie das Datumsänderungsfeld einer Datei unter Windows aktualisieren möchten?

  1. Befehle Zugriff über C++,. NET, C# oder etwas Natives für Windows (vorzugsweise Vista)
  2. tools / Anwendungen vorzugsweise kostenlos und wenn möglich auch Open Source

Bearbeiten: es gibt bereits eine Seite für Anwendungen, wie von CheapScotsman hier.

Wenn jemand weiß, wie ich das über C++ machen kann, C#, WSH oder etwas Ähnliches, gut und gut, sonst würde ich denken, dass alles andere in der verknüpften Frage behandelt wird.

Author: facepalmd, 2009-07-21

30 answers

Wenn Sie den Datumsstempel einer Datei mit Windows berühren möchten, verwenden Sie den folgenden Befehl an der Eingabeaufforderung:

copy /b filename.ext +,,

(wobei filename.ext der Name Ihrer Datei ist). Das +,, ist eine spezielle flag copy, erzählen Sie einfach update das Datum/Zeit auf die Datei:

* Ändern von Uhrzeit und Datum einer Datei

Wenn Sie einer Datei die aktuelle Uhrzeit und das aktuelle Datum zuweisen möchten, ohne die Datei zu ändern, verwenden Sie die folgende Syntax:

copy /b Source+,,

Die Kommas geben die weglassen des Zielparameters.

Bearbeiten basierend auf Kommentaren von Lumi und Justin: Lege dies in eine Batch-Datei, zB. berühren.cmd

@COPY /B %1+,, %1

Dies funktioniert auch dann, wenn sich die Datei nicht im aktuellen Verzeichnis befindet (getestet unter Windows 7).

 395
Author: Community,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-06-12 13:48:39

Ich habe unxutils verwendet und empfohlen, die native Win32-Ports vieler gängiger Unix-Dienstprogramme sind. Es gibt einen touch Befehl drin.

 166
Author: Greg Hewgill,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2008-09-09 09:13:05

Wenn Sie nur das Datum der letzten Änderung der Datei ändern möchten (was mein Fall war):

C:\> powershell  (ls your-file-name-here).LastWriteTime = Get-Date
 105
Author: ThiagoAlves,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2011-09-09 14:18:55
type nul >>file & copy file +,,
  • Erzeugt file wenn es nicht existiert.
  • Lässt den Dateiinhalt in Ruhe.
  • Verwendet nur cmd Built-Ins.
  • Beide last-access und creation mal aktualisiert.

UPDATE

Gah! Dies funktioniert nicht für schreibgeschützte Dateien, wohingegen touch dies tut. Ich schlage vor:

:touch
if not exist "%~1" type nul >>"%~1"& goto :eof
set _ATTRIBUTES=%~a1
if "%~a1"=="%_ATTRIBUTES:r=%" (copy "%~1"+,,) else attrib -r "%~1" & copy "%~1"+,, & attrib +r "%~1"
 64
Author: bobbogo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2011-02-16 15:21:00

@dash-tom-bang:

Hier ist Technets Erklärung des mysteriösen ' + ' und Kommas:

Kopieren / b Quelle+,,

Die Kommas zeigen das Weglassen von der Zielparameter.

Der Befehl copy unterstützt das Zusammenführen mehrerer Dateien zu einer einzigen Zieldatei. Da ein leeres Ziel nicht mit einem Leerzeichen an der Eingabeaufforderung angegeben werden kann, können zwei Kommas verwendet werden, um dies zu bezeichnen.

Und dies ist Technets Kopierbefehl Referenz: http://technet.microsoft.com/en-us/library/bb490886.aspx

 33
Author: Faredoon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-03-04 05:25:41

Wenn Sie es selbst codieren möchten, bietet. NET die File.SetLastAccessTime, File.SetCreationTime und File.SetLastWriteTime methoden.

 23
Author: Fredrik Mörk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2009-07-22 05:59:04

Hier ist eine rekursive version mit powershell... dies ändert die zuletzt geänderte Zeit für alle Dateien und Unterverzeichnisse und Dateien in den Unterverzeichnissen dieses Verzeichnisses

ps c:myDir> Get-ChildItem . * -recurse | ForEach-Object{$_.LastWriteTime = get-date}
 21
Author: roger,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-07-13 14:54:37

Ich habe dies versucht, um eine leere Datei in meinem Batch-Skript zu erstellen. Sie können dies verwenden:

ECHO text>file1.txt
 17
Author: pkm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-04-25 09:29:45

Das [[2]}GnuWin32 - Projekt verfügt über Windows-Ports der Gnu-Versionen der Unix - Befehlszeilenprogramme.

Es kommt als eine Reihe von separaten Paketen und Sie können nur die Befehle installieren, die Sie ohne andere Abhängigkeiten benötigen. Für touch benötigen Sie das Paket CoreUtils.

 16
Author: Dave Webb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2008-09-09 09:18:05

cygwin kommt mit touch. Ich weiß, dass Sie erwähnt haben, dass Sie kein ganzes Framework installieren möchten, aber cygwin ist ziemlich leicht und kann über das DOS-Befehlsfenster aufgerufen werden, ohne dass die gesamte Unix-ähnliche Befehlszeile aktiviert ist.

Sie können auch steuern, welche Tools installiert werden sollen, sodass Sie einfach die Datei touch.exe installieren und den Rest des Frameworks belassen können.

 15
Author: serg10,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2008-09-09 09:17:29

Hier ist eine einfache regfile Ich schrieb Rechtsklick auf "touch" in Windows Explorer. Es wäre auch einfach, es zu skripten, da es nur aufruft:

cmd.exe /c copy %1+nul %1 /by
 14
Author: Jon Galloway,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2009-07-21 22:03:00

Native Win32-Ports vieler Unix-Befehle, einschließlich touch.

Ich habe es schon einmal benutzt und es funktioniert gut-keine Installation, keine DLLs usw

 13
Author: Adam Davis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2008-09-09 09:13:36

Versuchen Sie es mit CodeProject.

  • Keine Notwendigkeit zu installieren.
  • Wenn Sie möchten, können Sie sogar die Quelle ändern.
 11
Author: Prakash,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2008-09-09 09:19:08

Sie können auch Cygwin installieren, das Ihnen Touch sowie eine Vielzahl anderer * NIX-Befehle gibt.

 9
Author: jamesaharvey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2009-07-21 21:49:43

Es gibt Windows-Ports vieler Unix-Dienstprogramme. Schauen Sie sich die Projekte unxutils oder GnuWin32 an.

 5
Author: VladV,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2009-07-21 21:55:15

Aus einer ähnlichen Frage zum Stapelüberlauf.

Zum Aktualisieren von Zeitstempeln (Ignorieren der anderen Funktionen von touch) würde ich Folgendes verwenden:

copy /b filename.ext +,,
 5
Author: Dennis Williamson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-05-23 11:33:51

Dieser Inhalt kann in einer Reg-Datei gespeichert werden. Dadurch wird ein Kontextmenü mit der rechten Maustaste für alle Dateien mit der Fähigkeit "Datei berühren" hinzugefügt (getestet unter Windows 7). Kopieren Sie alle die folgenden Zeilen in die Datei. Führen Sie die Datei aus und genehmigen Sie die Frage. Rechtsklick auf eine Datei (oder mehrere Dateien) - "Touch File" Option ist jetzt verfügbar.

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell]

[HKEY_CLASSES_ROOT\*\shell\Touch File]

[HKEY_CLASSES_ROOT\*\shell\Touch File\command]
@="cmd /C copy /b \"%1\" +,,"
 5
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-07-28 21:18:21
 4
Author: CheapScotsman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-05-23 12:41:42

Von der Website:

Funduc Software Touch ist ein kostenloses "Touch" - Dienstprogramm, mit dem Sie so ändern Sie die Zeit- / Datums - und / oder Attributstempel für eine oder mehrere Dateien. In hinaus kann FS Touch addieren/subtrahieren eine bestimmte Anzahl von Sekunden aus die vorhandene Datei Zeit. Sie können angeben, welche Datei(en) und/oder Unterverzeichnisse über 'komplexe Dateimasken' zu ändern. Das Programm kann sein führen Sie interaktiv oder über die Befehlszeile aus. Neu in Version 7.2 ist ein Befehlszeile wechseln Sie zu datei ändern modifizierten Zeitstempel + / - die angegebene Anzahl von Sekunden.

FS Touch läuft unter Windows XP, Vista, Windows 7 und Windows 8.

 4
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-12-31 12:39:17

Wenn Sie git für ein oder mehrere Projekte verwenden, verfügt das auf mingw basierende git-bash für Windows über den Befehl touch. Ich möchte @greg-hewgill dafür danken, dass er mich darauf hingewiesen hat, dass ' nix-Dienstprogramme für Windows existieren, weil es das war, was mich auf die Idee gebracht hat, Touch in git-bash auszuprobieren.

 4
Author: Superole,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-09-28 14:14:07

In PowerShell versuchen:

ni fileName.txt

NI ist ein Alias des Cmdlets New-Item.

 3
Author: Twisty,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2015-06-17 02:53:17

Speichern Sie Folgendes als Touch.bat in Ihrem %windir% \ system32 Ordner oder fügen Sie die ordner, in dem es in der Umgebungsvariablen PATH gespeichert ist:

@echo off
if %1.==. goto end
if not exist %1 goto end
copy /b %1 +,, > nul
echo %1 touched!
:end

Beispiel verwendung:

touch *.cpp
touch somefile.c

Referenz: Microsoft KB-69581

 2
Author: Tim Partridge,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-11-11 01:27:44

Ich habe einen schnellen Weg gefunden, dies zu tun, wenn vim installiert ist (nicht ideal für große Dateien, öffnet die gesamte Datei und schließt sie dann...)

vim foobar.txt +wq!

Das Argument " + " setzt, um die folgenden Befehle auszuführen. "wq!"ist "schreiben, beenden erzwingen". Dadurch wird die Datei geöffnet, gespeichert und unmittelbar danach geschlossen.

 2
Author: Jason,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2009-08-07 15:53:46

Ich wollte, dass die "Touch" - Funktion zum Klonen / Duplizieren der Dateidaten nativ aus einer anderen Datei stammt und aus einer Batchdatei verwendet werden kann.

Also' Drag & Drop 'Videodatei auf Batch-Datei, FFMPEG läuft, dann 'Datum erstellt' und' Datum geändert ' aus der Eingabedatei wird in die Ausgabedatei kopiert.

Dies schien zunächst einfach zu sein, bis Sie feststellen, dass Batch-Dateien mit Unicode-Dateinamen schrecklich umgehen können, Inline-PowerShell mit Dateinamensymbolen durcheinander bringt und das doppelte Maskieren ein Alptraum.

Meine Lösung bestand darin, den 'Touch' - Teil zu einem separaten PowerShell-Skript zu machen, das ich 'CLONE-FILE-DATE. ps1' nannte und das Folgendes enthält:

param
(
  [Parameter(Mandatory=$true)][string]$SourcePath,
  [Parameter(Mandatory=$true)][string]$TargetPath
)

(GI -LiteralPath $TargetPath).CreationTime  = (GI -LiteralPath $SourcePath).CreationTime
(GI -LiteralPath $TargetPath).LastWriteTime = (GI -LiteralPath $SourcePath).LastWriteTime

Dann ist hier ein Beispiel für die Verwendung in meinem ' CONVERT.BAT ' Batch-Datei:

%~dp0\ffmpeg -i "%~1" ACTION "%~1-output.mp4"

CHCP 65001 > nul && PowerShell -ExecutionPolicy ByPass -File "%~dp0\CLONE-FILE-DATE.PS1" "%~1" "%~1-output.mp4"

Ich denke, die PowerShell ist lesbar, also erkläre ich einfach die Batch-Sprache:

%~dp0 ist das aktuelle Verzeichnis der Batchdatei.

%~1 ist der Pfad der Datei auf den Stapel ohne zitieren.

CHCP 65001 > nul setzt Zeichen in UTF-8 und schluckt die Ausgabe.

-ExecutionPolicy ByPass ermöglicht es Ihnen, PowerShell auszuführen, ohne die globale Richtlinie ändern zu müssen, um zu verhindern, dass versehentlich Skripte ausgeführt werden.

 2
Author: WhoIsRich,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-02-18 22:08:54

Versuchen

Fsutil Datei createnew neu.txt 0

 1
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2010-10-08 07:46:20

Die fünf oben genannten Alternativen sowie drei weitere, die hier nicht erwähnt wurden, finden Sie auf SuperUser: "Windows Recursive Touch Command"

 1
Author: JdeBP,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-03-20 10:17:14

Dies hat etwas nichts mit der ursprünglichen Frage zu tun, aber ich finde dies aufgrund der GUI unter Windows sehr nützlich.

Ich verwende das TouchPro-Dienstprogramm, das eine GUI bereitstellt (in die Explorer-Shell integriert):

Http://www.jddesign.co.uk/products/touchpro/touchpro.htm

 1
Author: rustyx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-10-02 14:30:49

Nun, wenn Sie wirklich den Befehl touch verfügbar haben möchten, können Sie dies in eine Batchdatei namens touch.bat einfügen und einfügen C:\Windows:

TYPE NUL >>%1

Einfach genug.

 1
Author: MD XF,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-05-10 17:46:52

Die Unix-Leute haben das allgemeine Problem behoben, das Dateidatum einer Datei mit dem Befehl touch zu aktualisieren. Für Windows ist jedoch manchmal eine einfachere Methode für Sonderfälle 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, fällt es mir leichter, das Kommentarfeld zu bearbeiten der Verknüpfung. Die meisten Leute lassen das leer, aber natürlich ist ein nützlicher Kommentar schnell gedacht. Und wenn ein Kommentar vorhanden ist, schadet das Hinzufügen oder Entfernen einer letzten Periode niemals.

 0
Author: Roland,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-05-23 11:33:51

Ich weiß zu schätzen, dass dies eine alte Frage ist,die ich gerade auf meinem Windows 10-System entdeckt habe. Ich habe Git von hier heruntergeladen und installiert (glaube ich) und es sieht so aus, als wären touch und verschiedene andere Dienstprogramme im Ordner bin.

 0
Author: 0909EM,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2015-12-26 20:40:13