目录
概要
HALCON 的 make_dir 算子仅支持创建单层目录无法自动递归创建 “不存在的父目录 + 子目录”。
问题解释
你遇到的HALCON错误代码:5282的核心含义是:要创建的目录的父目录不存在。
- 当参数是
'C:/Users/Ice/Desktop/文件夹'时,Desktop是已存在的父目录,因此能成功创建单层文件夹目录; - 当参数是
'C:/Users/Ice/Desktop/文件夹/文件夹1'时,上层的 'C:/Users/Ice/Desktop/文件夹'尚未创建(或确认是否已存在),make_dir 无法直接创建嵌套的第二层文件夹1,因此触发 5282 错误。
解决方法 1
手动逐层创建(适合固定路径),先创建上层目录 文件夹,再创建下层 文件夹1:
* 定义路径
ParentDir := 'C:/Users/10704/Desktop/文件夹'
TargetDir := 'C:/Users/10704/Desktop/文件夹/文件夹1'
* 第一步:创建父目录(先检查是否已存在,避免重复创建报错)
file_exists (ParentDir, ParentExists)
if (not ParentExists)
make_dir(ParentDir)
endif
* 第二步:创建子目录
file_exists (TargetDir, TargetExists)
if (not TargetExists)
make_dir(TargetDir)
endif
解决方法 2
调用系统命令(如 Windows 的 md 或者 mkdir )
* Windows系统:调用cmd创建多层目录
SystemCmd := 'md "C:/Users/Ice/Desktop/文件夹/文件夹1/文件夹11/文件夹111"'
system_call (SystemCmd)
或者
* Windows系统:调用cmd创建多层目录
SystemCmd := 'mkdir "C:/Users/Ice/Desktop/文件夹/文件夹1/文件夹11/文件夹111"'
system_call (SystemCmd)
补充
- 路径格式:HALCON 支持
/(推荐)或转义的\\(如C:\\Users\\Ice\\Desktop\\文件夹),避免直接用单个\(会被识别为转义符); - 权限问题:若仍报错,需检查 Windows 用户是否有该路径的 “写入 / 创建目录” 权限;
小结
HALCON的make_dir算子无法递归创建多级目录,当父目录不存在时会触发5282错误。
解决方法有两种:
1)手动逐层创建,先检查并创建父目录再创建子目录
2)调用系统命令(md/mkdir)直接创建多级目录

被折叠的 条评论
为什么被折叠?



