更改一个或多个文件、文件夹的时间戳。支持通配符。
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 (默认值) 不处理文件夹 (仅处理文件)。 注意:如果 FilePattern 是单个文件夹名而不是通配符,操作将总是被执行而与该设置无关。 该参数可以是一个 表达式 。 |
Recurse? |
0 (默认) 不处理子目录。 该参数可以是一个 表达式 。 |
ErrorLevel 被设置为 没有 被修改的文件个数,否则则为 0 。如果设置的时间戳是无效的,或者 FilePattern 匹配的值为空, ErrorLevel 也将被置为 1 。
在 Windows 95/98/ME 下,不支持修改文件夹的时间戳。这样的尝试将被忽略。
一个在 NTFS 分区上文件的访问时间可能不会像在 FAT16 & FAT32 分区上那样准确。
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时间。
注意:日期时间变量可以使用 EnvAdd 和 EnvSub 比较和加减。同样,除非两时间有相同的字符串长度,最好不要使用 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