使用AppleScript读取txt日期变量控制脚本执行的异常问题
问题原因
你的代码存在3个核心错误,导致比较逻辑完全不生效:
- 未实际读取txt文件内容:代码中
myFile仅存储了timeDate.txt的文件名字符串,根本没有读取文件内部的日期值,拿文件名和日期做比较没有任何意义 - 日期类型处理错误:直接写的
2021-09-25在AppleScript中不是合法的日期对象,读取到的文本格式日期也需要先转换为AppleScript支持的日期类型才能做大小比较 - 文件路径未正确拼接:你定义了桌面路径变量
desktop_folder但没有用来拼接完整的文件路径,无法定位到桌面的txt文件
修正后代码
-- 拼接桌面txt文件的完整路径 set desktopPath to path to desktop as text set targetFilePath to desktopPath & "timeDate.txt" -- 读取文件内容,去除前后空格、换行符避免格式异常 set fileContent to read file targetFilePath as text set dateStr to trim(fileContent) of me -- 定义对比的目标日期,转换为AppleScript日期对象 -- 若你系统为中文环境,可写为 set targetDate to date "2021年9月25日 00:00:00" set targetDate to date "Saturday, 25 September 2021 at 00:00:00" -- 将文件读取到的日期字符串转换为日期对象 set fileDate to date dateStr -- 日期比较,满足条件则终止脚本 if fileDate < targetDate then error number -128 end if -- 辅助函数:去除文本首尾的空白字符 on trim(inputText) set AppleScript's text item delimiters to {" ", return, linefeed, tab} set textItems to text items of inputText set AppleScript's text item delimiters to "" return textItems as text end trim
注意事项
- 请保证
timeDate.txt内的日期格式和你当前macOS系统的默认日期格式匹配,否则会出现日期转换报错 - 如果txt内的日期同时携带时间,代码会自动带入时间维度做比较,不需要额外调整逻辑
内容的提问来源于stack exchange,提问作者kitchen800
相关产品推荐
相关产品推荐

