招聘网站做沙龙,揭阳网站建设策划方案,WordPress产品录入,电子商务与网站建设报告本文将介绍一个使用Go语言编写的脚本#xff0c;其主要功能是解析XML文件并基于解析结果重命名文件夹。这个脚本适用于需要对文件夹进行批量重命名#xff0c;并且重命名规则依赖于XML文件内容的情况。
脚本功能概述 Steam创意工坊下载的Mod文件夹批量重命名为id名称 运行前… 本文将介绍一个使用Go语言编写的脚本其主要功能是解析XML文件并基于解析结果重命名文件夹。这个脚本适用于需要对文件夹进行批量重命名并且重命名规则依赖于XML文件内容的情况。
脚本功能概述 Steam创意工坊下载的Mod文件夹批量重命名为id名称 运行前 运行后
步骤
获取当前工作目录脚本首先获取当前的工作目录以便后续操作基于此目录进行。读取目录内容接着脚本读取并遍历当前目录下的所有文件和文件夹。查找并解析XML文件对于每个子文件夹脚本检查是否存在About/About.xml文件。如果存在脚本将读取并解析此XML文件。读取PublishedFileId.txt脚本还会读取About/PublishedFileId.txt文件的内容。重命名文件夹最后脚本使用从XML和PublishedFileId.txt文件中获取的信息来重命名子文件夹。
代码解析
导入必要的包
import (encoding/xmlfmtio/ioutilospath/filepath
)这些包分别用于XML解析、格式化输出、文件读取、操作系统操作和路径操作。
定义ModMetaData结构体
type ModMetaData struct {Name string xml:name
}此结构体用于解析XML文件中的name标签。
main函数
func main() {// ... 省略了部分代码
}主函数是脚本的入口点。
获取当前工作目录
currentDir, err : os.Getwd()
if err ! nil {fmt.Println(获取当前工作目录失败:, err)return
}这里脚本尝试获取当前的工作目录。如果失败脚本将打印错误信息并退出。
读取目录内容
files, err : os.ReadDir(currentDir)
if err ! nil {fmt.Println(读取目录内容出错:, err)return
}脚本读取并存储当前目录下的所有文件和文件夹。
遍历目录内容
for _, file : range files {if file.IsDir() {// ... 省略了部分代码}
}对于每个子文件夹脚本执行以下操作。
解析XML和重命名文件夹 这部分代码涉及读取XML文件、解析XML内容、读取PublishedFileId.txt文件以及重命名文件夹。这些操作基于前面的步骤获取的路径和文件名。
完整代码
go.mod
module steamModRenamergo 1.22main.go
package mainimport (encoding/xmlfmtio/ioutilospath/filepath
)// ModMetaData 结构体用于解析XML
type ModMetaData struct {Name string xml:name
}func main() {// 获取当前工作目录currentDir, err : os.Getwd()if err ! nil {fmt.Println(获取当前工作目录失败:, err)return}// 读取目录内容files, err : os.ReadDir(currentDir)if err ! nil {fmt.Println(读取目录内容出错:, err)return}// 遍历目录内容打印出所有子文件夹for _, file : range files {if file.IsDir() {// 构建About.xml的路径path : filepath.Join(currentDir, file.Name())aboutXMLPath : filepath.Join(path, About, About.xml)// 检查About.xml文件是否存在if _, err : os.Stat(aboutXMLPath); err nil {// 读取About.xml文件内容xmlData, err : ioutil.ReadFile(aboutXMLPath)if err ! nil {fmt.Println(读取文件失败:, err)continue}// 解析XMLvar modMetaData ModMetaDataif err : xml.Unmarshal(xmlData, modMetaData); err ! nil {fmt.Println(解析XML失败:, err)continue}filePath : filepath.Join(currentDir, file.Name(), About, PublishedFileId.txt)// 直接读取整个文件内容data, err : os.ReadFile(filePath)if err ! nil {fmt.Println(Error reading file:, err)continue}// 获取新的文件夹名称newDirName : string(data) modMetaData.Name// 重命名子文件夹if err : os.Rename(path, filepath.Join(filepath.Dir(path), newDirName)); err ! nil {fmt.Println(重命名文件夹失败:, err)continue}fmt.Printf(文件夹已重命名为: %s\n, newDirName)}}}
}
总结 这个Go脚本是一个实用的工具用于根据XML文件的内容批量重命名文件夹。通过结合XML解析和文件操作脚本能够自动化处理原本需要手动执行的重复性任务。这种自动化不仅提高了效率还减少了出错的可能性。