如何更改文件的时间戳?[重复]


74

可能重复:
如何在dll或exe中修改时间戳?
Windows是否等效于Linux命令“触摸”?

如何通过命令行将文件的时间戳设置为特定日期?

我的具体情况是Windows 7。


1
您可能应该澄清您的问题,并声明您要选择新的时间戳。当前的两个答案假定您正在寻找Unix命令的Windows端口,该端口touch将文件的时间戳设置为当前时间。
威廉·杰克逊

我已经浏览了Sysinternals,我很确定他们没有针对此的实用程序。您应该尝试从superuser.com/questions/135901/…
William Jackson

@威廉·杰克逊换了,谢谢。另外,如果它确实是Unix命令的端口,则touch可以指定日期。en.wikipedia.org/wiki/Touch_(Unix)。但是,自动链接有些问题,请确保同时获得两个括号。
Joseph Hansen

1
我...不敢相信我从来没有读过书man touch。你教了我一些新东西。
威廉·杰克逊

Answers:


92

由于William Jackson的回答,我在Stack Overflow上发现了类似的问题

接受的答案各国使用PowerShell和这些命令:

$(Get-Item ).creationtime=$(Get-Date "mm/dd/yyyy hh:mm am/pm")
$(Get-Item ).lastaccesstime=$(Get-Date "mm/dd/yyyy hh:mm am/pm")
$(Get-Item ).lastwritetime=$(Get-Date "mm/dd/yyyy hh:mm am/pm")

编辑

两个例子:

(这来自注释:)将文件的上次访问时间设置为aaa.csv当前时间:

$(Get-Item aaa.csv).lastwritetime=$(Get-Date)

将文件的创建时间设置为foo.txt2015年11月24日上午6:00:

$(Get-Item foo.txt).creationtime=$(Get-Date "11/24/2015 06:00 am")

8
递归的略有变化,但更短一点,但可读性较差:“ gci -rec |%{$ _。lastWriteTime =($ _。lastAccessTime =($ _。creationTime =(get-date” 2011-09-14T07: 10:00“)))}”
codybartfast 2011年

9
对于不太了解Powershell的人,您必须将文件名放在Get-Item之后。您也可以在Get-Date之后省略字符串,以将属性设置为当前日期/时间,就像touch命令的默认行为一样。最后,您可以将该代码作为参数传递给powershell命令,以使其仅从现有批处理文件中执行该代码。例如:powershell $(Get-Item aaa.csv).lastwritetime=$(Get-Date)
sjbotha 2013年

1
如果要对目录中的每个文件执行此操作怎么办?
CodyBugstein

搜索“ Powershell每个文件”。您可能会发现类似以下的问题:stackoverflow.com/q/16804265/756329stackoverflow.com/q/181036/756329
Joseph Hansen

4
日期和时间格式不是按照命令的格式,而是系统范围的格式(因此,在我的系统中为dd / mm / yyy)。
Martin Argerami '17

40

请参阅此问题的答案。

具体来说,这可以通过以下方式本地完成:

copy /b filename.ext +,,

这会将时间戳记设置为当前时间。

copy命令的文档位于TechNet上

逗号指示Destination参数的省略。


2
您能解释一下它是如何工作的吗?什么是+,,?我怎么知道它的日期?
Joseph Hansen

1
@josmh检查文档链接以获取详细信息。运行命令时,时间戳将设置为当前时间。您是在暗示要将时间戳更改为您选择的仲裁时间吗?
威廉·杰克逊

7
我没有看到如何为我选择文件的新日期?
Joseph Hansen

这样做的主要问题是文件不在当前目录中时...它将把文件复制到当前目录中,而不是“触摸”到位。
Kasey Speakman

1
@KaseySpeakman-此命令依赖于位于当前目录中。使用pushd FILEDIR时,COMAND前,popd
Tydaeus

25

Nirsoft进行救援:尝试使用免费软件工具nircmd。在一个小型命令行程序中,这是一堆有用的工具。其中一个命令允许您指定创建时间修改时间中的一个或两个,如下所示:

nircmd.exe setfiletime“ c:\ temp \ myfile.txt”“ 24-06-2003 17:57:11”“ 22-11-2005 10:21:56”


3
另外,如果要将时间从一个文件传输到另一个文件,请从fileto到clonefiletime文件效果最佳!
JasonXA 2015年

非命令行,但更方便批量编辑:BulkFileChanger通过Nirsoft
SaAtomic

15

使用Cygwin,将test.txt的时间戳设置为2000年1月31日,00:01.00:

touch -t 200001310001.00 test.txt

这会返回无效的日期格式错误。
Ziggy

@ziggy确保您得到所有​​零...
Joseph Hansen

2
这对我来说touch -t 201608221400 filename将其设置为22.08.2016 14:00:00 非常合适。
SebastianH

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.