# 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时间。

注意：日期时间变量可以使用 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