You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node-RED中能否给文件路径加变量并按日生成带日期的CSV文件?

在Node-RED中生成带日期的每日唯一CSV文件

完全可以通过Node-RED节点实现,不需要硬编码,以下是具体实现方案:

1. 生成格式化的日期文件名

首先需要将日期转换为你需要的DD/MM/YYYY格式(注意:文件名中使用/会引发路径问题,后面会说明),可以用Function节点或Change节点处理:

使用Function节点的示例代码

const date = new Date();
// 补零确保日期/月份为两位数字
const day = String(date.getDate()).padStart(2, '0');
const month = String(date.getMonth() + 1).padStart(2, '0');
const year = date.getFullYear();

// 注意:Windows系统文件名不能含/,Linux/macOS会将/识别为目录分隔符,建议替换为-或_
// 按你的需求生成格式(存在路径风险):
const dateStr = `${day}/${month}/${year}`;
// 推荐的安全格式:
// const dateStr = `${day}-${month}-${year}`;

// 将生成的文件名存入msg.filename
msg.filename = `./Documentos/Teste-node/tes_${dateStr}.csv`;
return msg;

使用Change节点的方式

通过JSONata表达式生成日期字符串:

  • 在Change节点中设置Set msg.filename为JSONata类型,输入表达式:
    "./Documentos/Teste-node/tes_" & $pad($day($now()), 2, "0") & "/" & $pad($month($now()), 2, "0") & "/" & $year($now()) & ".csv"
    
    同样建议将/替换为-避免路径问题。

2. 动态写入文件

将File节点配置为"写入"模式,在"文件名"字段中填写{{msg.filename}},这样File节点会动态读取Function/Change节点生成的文件名:

  • 如果需要每日向同一个文件追加内容,勾选File节点的"追加"选项;
  • 如果仅需创建一次文件(后续不追加),可以配合Context存储记录当日是否已创建文件,避免重复创建。

关键注意事项

  • 文件名中的路径分隔符问题:/在Windows中是路径分隔符,会导致文件创建失败;在Linux/macOS中会创建嵌套目录(比如生成tes_01/01/2023.csv会变成tes_01目录下的01目录里的2023.csv),这通常不符合需求,所以强烈建议将日期分隔符替换为-或_,比如tes_01-01-2023.csv。
  • 每日唯一文件的实现:由于生成的日期字符串按天固定,只要当天触发写入,都会指向同一个文件,自然实现每日一个文件的需求。

内容的提问来源于stack exchange,提问作者LCS.T

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 02:55:12