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

2024-06-21 17:52

本文主要是介绍【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解析和文件操作,脚本能够自动化处理原本需要手动执行的重复性任务。这种自动化不仅提高了效率,还减少了出错的可能性。

这篇关于【Golang】Steam 创意工坊 Mod 文件夹批量重命名的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1081916

相关文章

UE3 的Config文件夹

工作中需要用到UE3,看官方文档中文版翻译有些偷懒和翻译不妥当,故看着英文自己翻译理解了一下,以供后续参考。 目录 基础内容 0.概述  1.uc脚本中的类定义关联配置文件和保存 2.保存配置文件API SaveConfig() StaticSaveConfig() 3.ucc 编译的时候使用 4.配置文件类型 Default 配置文件 和 XXX 配置文件  Base 配置

Steam邮件推送内容有哪些?配置教程详解!

Steam邮件推送功能是否安全?如何个性化邮件推送内容? Steam作为全球最大的数字游戏分发平台之一,不仅提供了海量的游戏资源,还通过邮件推送为用户提供最新的游戏信息、促销活动和个性化推荐。AokSend将详细介绍Steam邮件推送的主要内容。 Steam邮件推送:促销优惠 每当平台举办大型促销活动,如夏季促销、冬季促销、黑色星期五等,用户都会收到邮件通知。这些邮件详细列出了打折游戏、

简鹿文件批量重命名:一款文件批量改名高手都在用的工具

作为 IT 行业的搬砖民工,互联网的数据量爆炸性增长,文件管理成为了一项日益重要的任务。"简鹿文件批量重命名"应运而生,旨在为用户提供一个高效、灵活的解决方案,以应对繁琐的文件命名、排序、创建及属性修改等挑战。 这款软件凭借其一键式操作、强大的自定义规则导入、以及全面的批量处理能力,极大地简化了文件管理流程,尤其适合处理大量文件的个人用户及企业环境,是提高工作效率、保持文件系统整洁的得力助手

Go语言中的go.mod与go.sum

问题1:什么是go.mod以及它是用来解决什么问题的? go mod 是 Go 语言引入的包管理工具,用于解决 Go 语言项目在依赖管理方面的问题。 传统上,若不使用go mod,则需要要通过GOPATH来管理依赖,而这种方式存在一些问题: 如1. 包管理依赖不明确 2. 依赖库的版本管理 3. 需要手动管理同步依赖的复杂性等 而go mod可以帮助开发者在项目中明确管理依赖的版

视频批量剪辑新境界:一键转码MP4至MP3并自动删除原文件,轻松优化存储空间与播放体验

随着数字媒体的飞速发展,视频文件已成为我们生活中不可或缺的一部分。然而,大量视频文件的累积不仅占据了宝贵的存储空间,而且在某些情况下,我们更希望提取视频中的音频内容。为了满足这一需求,我们推出了全新的视频批量剪辑方案,让你轻松实现MP4到MP3的转码,并自动删除原文件,优化存储空间,提升播放体验。 首先,让我们进入“视频剪辑高手”的主页面。简洁明了的界面设计,让您一眼就能找到所需的功能板

Elasticsearch java API (10)批量处理 API

使用批量处理器编辑 的 BulkProcessor类提供了一个简单接口自动冲洗批量操作基于请求的数量或大小,或者在给定的时期。 使用它,首先创建一个 BulkProcessor实例: import org.elasticsearch.action.bulk.BackoffPolicy;import org.elasticsearch.action.bulk.BulkPr

批量压缩文件夹内文件并记录解压密码

主要功能是: 遍历指定目录中的所有文件。 为每个文件生成一个随机密码。 使用生成的密码将文件压缩为 7z 格式。 将文件名和对应的密码记录到 passwords.txt 文件中。 import osimport randomimport stringfrom py7zr import SevenZipFile, exceptions# 设置文件夹路径folder_path = r'D:

解决文件或文件夹无法删除问题

最近呢,发现很多小伙伴都会遇到一个问题,就是当我要删掉一个文件或者软件的时候,就会弹出[操作无法完成,因为其中的文件夹或文件已在另一个程序中打开] 然后我就翻看网站,很多都是什么去**[任务管理器]修改[资源管理器]**中的文件,虽然有时候可以解决问题,但是还有许多你无法找到或者就是浪费大量的时间去修改。 所以呢,我今天分享一款强大的免费的软件,名字叫[LockHunter] 使用方

Python批量读取csv文件并合并文件

import pandas as pdimport os # 获取当前路径cwd = os.getcwd()# 要拼接的文件夹及其完整路径,注不要包含中文## 待读取批量csv的文件夹 read_path = 'data_Q1_2018' ## 待保存的合并后的csv的文件夹 save_path = 'data_Q1_2018_merge' ## 待保存

如何在Linux里进行批量用户操作-创建、删除

因为要在组内进行Linux基础培训,所以就得给他们每人都创建一个使用账号. 虽然我可以一个个手动创建,但是这和程序员优秀的品质“懒”相悖。因此在这里记录我学习批量用户增加和删除的操作过程 回忆一下单个用户操作管理命令是useradd, userdel,用法很简单,就是useradd zs即可,至于创建用户家目录文件夹和设置密码,则需要增加很多的参数。 批量管理用户命令是newusers,