Oracle PeopleSoft环境下SQR模糊查找服务器文件的方法咨询
在PeopleSoft SQR中实现文件前缀模糊查找的方法
SQR本身没有内置的文件模糊匹配函数,要实现前缀查找(比如匹配前缀为"ABC"的文件),可以通过调用操作系统命令结合文件读取的方式来实现,具体步骤如下:
核心思路
利用call system执行操作系统的目录查询命令,将匹配结果输出到临时文件,再通过SQR的文件读取函数检查临时文件内容,判断是否存在目标前缀的文件。
具体实现
Windows环境
! 定义目标路径和前缀,生成查询命令 let $target_path = 'C:\your\target\directory\' let $prefix = 'ABC' let $cmd = 'dir /b "' || $target_path || $prefix || '*" > C:\temp\match_result.txt' ! 执行系统命令 call system($cmd) ! 检查临时文件是否有内容(即是否存在匹配文件) let #file_exists = 0 open 'C:\temp\match_result.txt' as 1 for reading record=80:vary if #status = 0 read 1 into $line if #status = 0 let #file_exists = 1 ! 存在匹配文件 end-if close 1 end-if ! 清理临时文件 call system('del C:\temp\match_result.txt')
Linux/Unix环境
! 定义目标路径和前缀,生成查询命令 let $target_path = '/your/target/directory/' let $prefix = 'ABC' let $cmd = 'ls ' || $target_path || $prefix || '* > /tmp/match_result.txt 2>/dev/null' ! 执行系统命令 call system($cmd) ! 检查临时文件是否有内容 let #file_exists = 0 open '/tmp/match_result.txt' as 1 for reading record=80:vary if #status = 0 read 1 into $line if #status = 0 let #file_exists = 1 ! 存在匹配文件 end-if close 1 end-if ! 清理临时文件 call system('rm /tmp/match_result.txt')
注意事项
- 确保SQR运行的用户拥有目标目录的读取权限,以及临时目录的读写权限
- 处理多个匹配文件的场景:如果需要获取所有匹配文件名,可以循环读取临时文件的每一行
- 临时文件路径可根据实际环境调整,避免与其他进程冲突
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

