一、标准 SCPI 文件修改时间指令(Keysight N6705B/C、RP7900、N678x)
1、查询单个日志文件的最后修改时间
scpi
MMEMory:FILE:MODified:TIME? "<完整文件路径>"
返回格式:YYYY,MM,DD,HH,MM,SS 示例读取 DLOG 序列记录文件:
scpi
MMEM:FILE:MOD:TIME? "/LOG/SEQ001.CSV"
示例读取 U 盘日志:
scpi
MMEM:FILE:MOD:TIME? "/USB0/LOG/RUN005.ZIP"
网络共享文件同理:/NET0/LOG/xxx.CSV
2、配套前置:列出目录全部日志文件
scpi
// 列出DLOG路径下所有文件
MMEM:CAT? "/LOG/"
返回结构:文件总数,字节1."文件名1",字节2."文件名2"... 提取文件名后拼接完整路径,代入上面时间查询指令。
二、DLOG/ELOG 专属采集起止时间(记录本身的生成时间,等同首次写入时间)
文件首次创建写入时间等价于本次 DLOG 采集启动时刻;文件修改时间一般等于停止采集时刻:
scpi
// 当前/最后一次DLOG会话启停时间戳
DLOG:TIME:STARt?
DLOG:TIME:STOP?
仅对最近一次未清除缓存的 DLOG 有效;久远存档文件必须用MMEM:FILE:MOD:TIME?读取磁盘真实修改时间。
三、批量遍历所有历史文件时间示例流程
scpi
//1 获取DLOG存储根目录
>> DLOG:PATH?
<< "/LOG/"
//2 列出目录内全部文件
>> MMEM:CAT? "/LOG/"
<< 3.1024."TEST01.CSV",2048."TEST02.CSV",512."TEST03.ZIP"
//3 逐个查修改时间
>> MMEM:FILE:MOD:TIME? "/LOG/TEST01.CSV"
<< 2026.06.10.15.30.22
>> MMEM:FILE:MOD:TIME? "/LOG/TEST02.CSV"
<< 2026.06.11.09.12.45
四、B2900 四象限 SMU 适配
指令完全一致,仅日志目录不同:
scpi
MMEM:FILE:MOD:TIME? "/LOGS/REC001.CSV"
LOG:TIME:STARt?
LOG:TIME:STOP?
五、辅助相关文件时间指令
查询文件创建时间(部分新版固件支持)
scpi
MMEM:FILE:CREATe:TIME? "/LOG/SEQ001.CSV"
查询目录本身修改时间
scpi
MMEM:DIR:MOD:TIME? "/LOG/"
六、关键特性与兼容限制
N6705A 老固件限制 初代 N6705A 无MMEM:FILE:MODified:TIME?指令,下发返回-113 Undefined header;替代方案:
读取 CSV 文件首行自带采集时间戳(文件内部第一行表头携带 Start Time)
下载文件后上位机解析文本内时间作为创建时间
活跃写入文件行为 正在 DLOG 采集写入的文件,MOD:TIME会每秒持续刷新;DLOG:STOP停止后时间戳固定不再变动。
压缩 ZIP 文件时间 压缩后的.zip文件修改时间 = 压缩打包完成的时刻,不等于原始采集结束时间;如需原始采集时间,优先读取内部 CSV 里的时间戳。
网络共享 (NET0) 时间同步 仪器系统时间必须和 PC 时间同步,否则MOD:TIME和 Windows 文件属性时间存在偏差;可同步校时:
scpi
SYST:TIME 2026.06.11.10.30.00
SYST:TIME?
报错含义
-251 Mass storage error:路径错误、文件不存在、U 盘 / 网络断开
-222 String too long:路径字符串超长,精简文件名
七、上位机快速比对逻辑
遍历MMEM:CAT?拿到全部日志文件名
循环调用MMEM:FILE:MOD:TIME?获取每个文件时间戳
按时间戳排序,区分新旧记录
结合DLOG:FILE:MAXCount?判断哪些是即将被自动删除的最旧文件
八、补充:ELOG 事件文件时间查询
操作完全相同,替换 ELOG 路径即可:
scpi
ELOG:PATH?
MMEM:FILE:MOD:TIME? "/ELOG/EVENT001.CSV"
ELOG 文件修改时间 = 最后一条故障事件写入时刻。