【Golang】Steam 创意工坊 Mod 文件夹批量重命名

 本文将介绍一个使用Go语言编写的脚本,其主要功能是解析XML文件并基于解析结果重命名文件夹。这个脚本适用于需要对文件夹进行批量重命名,并且重命名规则依赖于XML文件内容的情况。

脚本功能概述

 Steam创意工坊下载的Mod文件夹批量重命名为id+名称
运行前
在这里插入图片描述
运行后
在这里插入图片描述

步骤

  1. 获取当前工作目录:脚本首先获取当前的工作目录,以便后续操作基于此目录进行。
  2. 读取目录内容:接着,脚本读取并遍历当前目录下的所有文件和文件夹。
  3. 查找并解析XML文件:对于每个子文件夹,脚本检查是否存在About/About.xml文件。如果存在,脚本将读取并解析此XML文件。
  4. 读取PublishedFileId.txt:脚本还会读取About/PublishedFileId.txt文件的内容。
  5. 重命名文件夹:最后,脚本使用从XML和PublishedFileId.txt文件中获取的信息来重命名子文件夹。

代码解析

导入必要的包

import ("encoding/xml""fmt""io/ioutil""os""path/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.22

main.go

package mainimport ("encoding/xml""fmt""io/ioutil""os""path/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解析和文件操作,脚本能够自动化处理原本需要手动执行的重复性任务。这种自动化不仅提高了效率,还减少了出错的可能性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/362403.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

maven仓库的作用以及安装 , DEA配置本地Maven

ay12-maven 主要内容 Maven的作用Maven仓库的作用Maven的坐标概念Maven的安装IDEA配置本地Maven 一、maven概述 1.1、项目开发中的问题 1、我的项目依赖一些jar包&#xff0c;我把他们放在哪里&#xff1f;直接拷贝到项目的lib文件夹中?如果我开发的第二个项目还是需要上面…

Linux系统编程(七)进程间通信IPC

进程间通讯的7种方式_进程间通信的几种方法-CSDN博客 管道 pipe&#xff08;命名管道和匿名管道&#xff09;&#xff1b;信号 signal&#xff1b;共享内存&#xff1b;消息队列&#xff1b;信号量 semaphore&#xff1b;套接字 socket&#xff1b; 1. 管道 内核提供&#x…

亿发进销存管理系统+:多终端无缝协同,实现经营销售场景全覆盖

亿发软件凭借产品、市场、业务的深入理解&#xff0c;在进销存基础上进行了延伸&#xff0c;推出多终端、一体化的“进销存管理系统”多元产品矩阵。对企业经营中进货、出货、销售、付款等进行全程跟踪管理。有效辅助企业解决业务管理、销售管理、库存管理、财务管理等一系列问…

如何做到高级Kotlin强化实战?(一)

高级Kotlin强化实战&#xff08;一&#xff09; 第一章 Kotlin 入门教程1.Kotlin 入门介绍2.Kotlin 与 Java 比较 第一章 Kotlin 入门教程 1.Kotlin 入门介绍 Kotlin 概述 Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言。它主要是 JetBrains 开发团队所开发出来的编程…

卸载vmware时2503,2502报错的解决办法

1.背景 windows 卸载vmware时&#xff0c;显示2503报错&#xff0c;无法完全卸载 2. 解决方案 2.1 参考安装报错2502&#xff0c;2503的处理方式 文献&#xff1a;https://blog.csdn.net/zhangvalue/article/details/80309828 2.1 步骤&#xff1a; 2.1.1 cmd 管理员打开…

实时美颜技术解析:视频美颜SDK如何改变直播行业

实时美颜技术的出现&#xff0c;尤其是视频美颜SDK的应用&#xff0c;正逐渐改变着直播行业的生态。 一、实时美颜技术的原理 实时美颜技术利用人工智能和图像处理算法&#xff0c;对视频中的人物面部进行优化和修饰。该技术通常包含以下几个步骤&#xff1a; 1.人脸检测和识…

MMCV【mmclassification】 从0到1 之 Docker 容器环境搭建步骤总结

🥇 版权: 本文由【墨理学AI】原创首发、各位读者大大、敬请查阅、感谢三连 🎉 声明: 作为全网 AI 领域 干货最多的博主之一,❤️ 不负光阴不负卿 ❤️ 文章目录 📙 Linux 下 Docker 安装环境检查Docker 安装 [ root 或者 sudo 权限用户可安装 ]给 普通用户 加入 Docker …

RedisConnectionException: Unable to connect to localhost/<unresolved>:6379

方法一&#xff1a;删除配置密码选项 一般是因为你在启动redsi服务的时候没有以指定配置文件启动 把application.yml文件中的redis密码注释掉 方法二 以指定配置文件启动 这样就不用删除yml文件中密码的选项了 在redis,windows.conf 中找到requirepass&#xff0c;删除掉前…

python 识别图片点击,设置坐标,离设置坐标越近的优先识别点击

import pyautogui import cv2 import numpy as np import mathdef find_and_click(template_path, target_x, target_y, match_threshold0.8):"""在屏幕上查找目标图片并点击。Args:template_path: 目标图片的路径。target_x: 预设的坐标 x 轴值。target_y: 预设…

ComfyUI中运行Stable Audio Open,实现背景音乐、音效自由

&#x1f9e8;背景 stability在一个月之前默默的发布了Stable Audio Open 1.0的音频音效生成模型&#xff0c;不过好像影响力一般&#xff0c;也没有太多文章分享测试&#xff0c;而今天看comfyui作者的一篇介绍文档&#xff0c;他已经让comfyui默认支持了这个模型。 原开源地…

学分制系统 WebService_PantoSchool SQL注入致RCE漏洞复现

0x01 产品简介 学分制系统由上海鹏达计算机系统开发有限公司研发,是基于对职业教育特点和需求的深入理解,结合教育部相关文件精神,并广泛吸纳专家、学者意见而开发的一款综合性管理系统。系统采用模块化的设计方法,方便学校根据自身教学改革特点、信息化建设进程情况选择、…

如何预防和处理他人盗用IP地址?

IP地址的定义及作用 解释 IP 地址在互联网中的作用。它是唯一标识网络设备的数字地址&#xff0c;类似于物理世界中的邮政地址。 1、IP地址盗窃的定义 解释一下什么是IP地址盗用&#xff0c;即非法使用他人的IP地址或者伪造IP地址的行为&#xff0c;这种行为可能引发法律和安…

uniapp 实人认证

最下面有demo 首先Dcloud创建云服务空间&#xff0c;开启一键登录并充值 下一步 1. 右键项目 》 创建uniCloud云开发环境 》右键uniCloud》关联云服务空间 2. cloudfunctions右键 新建云函数&#xff0c;任意命名&#xff08;例&#xff1a;veify&#xff09;&#xff0c;然…

elasticsearch重置密码

0 案例背景 Elasticsearch三台集群环境&#xff0c;对外端口为6200&#xff0c;忘记elasticsearch密码&#xff0c;进行重置操作 注&#xff1a;若无特殊说明&#xff0c;三台服务器均需进行处理操作 1 停止es /rpa/bin/elasticsearch.sh stop 检查状态 ps -ef|grep elast…

【Linux】ss 命令使用详解

目录 一、ss命令介绍 二、ss命令格式和使用 1、命令格式 2、ss命令的常用选项 3、命令的常见用法 3.1 找出打开套接字/端口应用程序 3.2 检查系统的监听套接字 3.3 显示所有状态为established的SMTP连接 3.4 查看建立的 TCP 连接 3.5 通过 -r 选项解析 IP 和端口号 …

UI(三)布局

文章目录 1、Colum和Row——垂直方向容器和水平方向容器2、ColumnSplit和RowSplit——子组件之间插入一条分割线3、Flex——弹性布局子组件的容器4、Grid和GridItem——网格容器和网格容器单元格5、GridRow和GridCol——栅格容器组件和栅格子组件6、List、ListItem、ListItemGr…

Mac OS 安装frida

安装frida和frida-tools Python是基础&#xff0c;提前装好Python 终端执行 python3 -m pip install frida 如果出现error 按照提示处理 信息提示&#xff1a;brew install pipx 于是终端执行&#xff1a; brew install pipx 安装frida&#xff1a; pipx install frida…

华宽通中标长沙市政务共性能力建设项目,助力智慧政务建设新飞跃

在数字化浪潮的推动下&#xff0c;长沙市政府正积极拥抱智慧城市建设&#xff0c;以科技力量提升政务服务效能。华宽通凭借其卓越的技术实力与丰富的项目经验&#xff0c;成功中标长沙市政务共性能力建设项目&#xff0c;这无疑是对华宽通在智慧城市领域实力的高度认可。 华宽…

Mind+在线图形编程软件(Sractch类软件)

Scratch作为图形编程软件&#xff0c;可以为小朋友学习编程提供很好的入门&#xff0c;是初次接触编程的小朋友的首选开发软件。这里介绍的Mind软件与Sractch用法几乎完全一致&#xff0c;并且可以提供在线免安装版本使用&#xff0c;浏览器直接打开网址&#xff1a; ide.mindp…

纳米硅(SiNP)可用于制造锂离子电池 纳米硅粉为其代表产品

纳米硅&#xff08;SiNP&#xff09;可用于制造锂离子电池 纳米硅粉为其代表产品 纳米硅&#xff08;SiNP&#xff09;指尺寸在纳米尺度范围内的硅颗粒。纳米硅具有光吸收谱宽、表面活性高、比表面积大、机械强度高、电学性能好等优势&#xff0c;在石油化工、建筑工程、电子电…