请求编写AppleScript批量提取文件夹(含子文件夹)中XML文件的指定标签值并保存至文本文件
请求编写AppleScript批量提取文件夹(含子文件夹)中XML文件的指定标签值并保存至文本文件
嘿,我帮你搞定这个批量处理的需求啦!之前的脚本只能处理单个文件,还有一些语法小问题,我重新写了一个完整的AppleScript,它能递归遍历你指定的文件夹(包括所有子文件夹)里的XML文件,提取<egJob:description>标签里的内容,然后按你要的格式把文件名和对应值保存到桌面的output.txt里。
下面是完整的脚本:
-- 让用户选择要处理的目标文件夹 set targetFolder to choose folder with prompt "请选择包含XML文件的文件夹(含子文件夹)" -- 定义要提取的标签 set startTag to "<egJob:description>" set endTag to "</egJob:description>" -- 准备输出文件(桌面的output.txt) set outputPath to ((path to desktop as text) & "output.txt") set outputFile to open for access file outputPath with write permission set eof outputFile to 0 -- 清空文件内容 -- 递归遍历所有XML文件 tell application "System Events" set xmlFiles to every file of entire contents of targetFolder whose name extension is "xml" end tell -- 逐个处理每个XML文件 repeat with xmlFile in xmlFiles set fileName to name of xmlFile try -- 读取文件内容 set fileContent to read xmlFile as «class utf8» -- 计算标签的位置 set startPos to offset of startTag in fileContent if startPos is 0 then -- 如果找不到起始标签,写入提示 write fileName & " = 未找到目标标签" & linefeed to outputFile starting at eof continue end if set startContentPos to startPos + length of startTag set endPos to offset of endTag in fileContent starting from startContentPos if endPos is 0 then -- 如果找不到结束标签,写入提示 write fileName & " = 标签不完整" & linefeed to outputFile starting at eof continue end if -- 提取标签内容 set tagContent to text startContentPos through (endPos - 1) of fileContent -- 按要求格式写入结果 write fileName & " = " & tagContent & linefeed to outputFile starting at eof on error errMsg -- 处理读取文件时的错误 write fileName & " = 读取错误:" & errMsg & linefeed to outputFile starting at eof end try end repeat -- 关闭输出文件 close access outputFile -- 提示处理完成 display dialog "处理完成!结果已保存到桌面的output.txt文件中。" buttons {"确定"} default button 1
脚本说明:
- 灵活选择文件夹:运行脚本后会弹出对话框让你选择要处理的文件夹,不用手动修改路径,更方便
- 递归遍历子文件夹:会自动处理目标文件夹下所有层级的子文件夹里的XML文件
- 异常处理:如果某个XML文件里找不到目标标签、标签不完整或者读取出错,都会在结果里标注出来,不会中断整个处理流程
- 编码兼容:用UTF-8编码读取文件,避免中文或特殊字符乱码的问题
使用方法:
- 打开Mac自带的「脚本编辑器」(在启动台的「其他」文件夹里)
- 把上面的代码粘贴进去
- 点击工具栏的「运行」按钮(▶️)
- 在弹出的对话框里选择你要处理的文件夹
- 处理完成后,桌面会生成
output.txt,里面就是你要的所有结果啦!
备注:内容来源于stack exchange,提问作者Carloudidlidou
相关产品推荐
相关产品推荐

