FileSetTime


更改一个或多个文件、文件夹的时间戳。支持通配符。

FileSetTime [, YYYYMMDDHH24MISS, FilePattern, WhichTime, OperateOnFolders?, Recurse?]

参数

YYYYMMDDHH24MISS 如果为空或省略,默认使用当前时间。否则则需要指定操作所使用的时间 (参见 Remarks for the format). 早于 1601 年以前的年份不被支持。
FilePattern

单个文件或文件夹的名称,或通配符,比如 C:\Temp\*.tmp. 如果绝对路径没有给定, FilePattern 被假设为在 %A_WorkingDir% 中。

如果被省略,按 File-Loop 规则的最优先文件将被作为该选项的值。

WhichTime 那个时间戳将被设置:
M = 修改时间 (如果该值为空或忽略,这是默认值)
C = 创建时间
A = 访问时间
OperateOnFolders?

0 (默认值) 不处理文件夹 (仅处理文件)。
1 所有与通配符匹配的文件和文件夹都被执行操作。
2 仅处理文件夹 (不处理文件).

注意:如果 FilePattern 是单个文件夹名而不是通配符,操作将总是被执行而与该设置无关。

该参数可以是一个 表达式

Recurse?

0 (默认) 不处理子目录。
1 递归的处理所有匹配 FilePattern 的子目录及其中文件。所有子目录都将被递归的打开, 而不仅仅是那些匹配 FilePattern 的子目录。但是,整个路径名长于 259 个字符的文件和文件夹将被认为不存在。这些文件是罕见的,因为通常情况下操作系统不允许创建他们。

该参数可以是一个 表达式

ErrorLevel

ErrorLevel 被设置为 没有 被修改的文件个数,否则则为 0 。如果设置的时间戳是无效的,或者 FilePattern 匹配的值为空, ErrorLevel 也将被置为 1 。

注意

在 Windows 95/98/ME 下,不支持修改文件夹的时间戳。这样的尝试将被忽略。

一个在 NTFS 分区上文件的访问时间可能不会像在 FAT16 & FAT32 分区上那样准确。

YYYYMMDDHH24MISS 代表的意义分别是:

YYYY 四位数的年份
MM 两位数的月份 (01-12)
DD 两位数的天数 (01-31)
HH24 两位数的小时数 (00-23). 例如, 09 表示上午 9 点,而 21 表示下午 9 点。
MI 两位数的分钟数 (00-59)
SS 两位数的秒数 (00-59)

如果只给定部分的 YYYYMMDDHH24MISS (例如 200403), 其他的未给定的值将使用如下值代替:

MM: Month 01
DD: Day 01
HH24: Hour 00
MI: Minute 00
SS: Second 00

内置变量 A_Now 包含如上格式的当前时间。相似地, A_NowUTC 包含当前的UTC时间。

注意:日期时间变量可以使用 EnvAddEnvSub 比较和加减。同样,除非两时间有相同的字符串长度,最好不要使用 greater-than 或者 less-than 来比较时间。这是因为他们将作为数来比较;例如, 20040201 始终在数值上小于 (但是实际上大于) 200401010533。所以应该使用 EnvSub 来确定一组时间谁正谁负。

相关命令

FileGetTime, FileGetAttrib, FileSetAttrib, FileGetSize, FileGetVersion, FormatTime, File-loop, EnvAdd, EnvSub

示例

; 将所有匹配额文件的修改时间设置为当前时间:
FileSetTime, , C:\temp\*.txt ; 设置修改时间 (时间将为午夜):
FileSetTime, 20040122, C:\My Documents\test.doc ; 设置创建时间。 时间将设置为 4:55pm:
FileSetTime, 200401221655, C:\My Documents\test.doc, C ; 修改匹配一种格式的所有文件的修改时间。
; 由于最后一个参数所有匹配的文件夹也将被修改:
FileSetTime, 20040122165500, C:\Temp\*.*, M, 1