Mikrotik脚本无法创建文件原因咨询(RouterOS 7.2.3)
问题原因分析
你的脚本无法创建文件的核心原因是生成文件的逻辑错误:
- 你用
/file print file=$filename where name="";试图生成文件,但where name=""这个过滤条件匹配不到任何文件,RouterOS中/file print file=xxx只有在有符合条件的条目被打印时才会创建文件,空结果不会生成任何文件。 - 后续的
/file set $filename contents=$content;找不到目标文件,自然执行失败。
你的脚本权限(read、write、test)是满足操作要求的,权限不是问题。
修正方案
有两种常用的正确创建文件的方式:
方式1:直接创建空文件再写入内容
:local filename "test.txt" :local content "This is a test." # 检查文件是否存在,不存在则创建空文件 :if ([:len [/file find name=$filename]] = 0) do={ /file add name=$filename } # 写入目标内容 /file set $filename contents=$content;
方式2:利用/file print生成文件(确保有输出)
如果一定要用/file print的方式,去掉错误的过滤条件,确保命令能输出内容从而生成文件:
:local filename "test.txt" :local content "This is a test." # 打印所有文件列表到目标文件(自动创建文件) /file print file=$filename; :delay 1 # 覆盖为目标内容 /file set $filename contents=$content;
注:delay不需要设置5秒,1秒足够文件生成完成。
内容的提问来源于stack exchange,提问作者bielu000
相关产品推荐
相关产品推荐

