• [golang]批量修改名称


    package main
    
    import (
    	"fmt"
    	"io/fs"
    	"log"
    	"os"
    	"path/filepath"
    	"regexp"
    	"strconv"
    )
    
    func myWalkFunc(path string, info fs.FileInfo, err error) error {
    	ext := ".rmvb"
    	// log.Printf("--> path: %v, file: %v, ext: %v", path, info.Name(), filepath.Ext(path))
    
    	if info.IsDir() {
    		return nil
    	}
    
    	if filepath.Ext(path) != ext {
    		return nil
    	}
    
    	// get file name without ext
    	filename := info.Name()[:len(info.Name())-len(ext)]
    
    	//[电影天堂www.dygod.cn][三国演义][第20集][DVD高清晰版]
    	// [电影天堂www.dy2018.net]冰与火之歌:权力的游戏第一季01集中英双字[1024分辨率]
    	re := regexp.MustCompile(`-?[0-9]\d*集`)
    	strMatch := re.FindString(filename)
    	if strMatch == "" {
    		return fmt.Errorf("未找到关键字")
    	}
    	log.Printf("file: %v, match: %v, len=%v\n", filename, strMatch, len(strMatch))
    	strMatch = strMatch[:len(strMatch)-len("集")]
    
    	nMatch, err := strconv.Atoi(strMatch)
    	if err != nil {
    		return err
    	}
    	strNewFileName := fmt.Sprintf("权力的游戏S01EP%02d.%v", nMatch, ext)
    	log.Printf("match: %v, [%v] => [%v]\n", strMatch, filename, strNewFileName)
    	os.Rename(info.Name(), strNewFileName)
    
    	return nil
    }
    
    func main() {
    	fmt.Println("---------------- 批量修改名称 --------------------")
    	fmt.Scan()
    
    	curdir, err := os.Getwd()
    	if err != nil {
    		log.Fatalln(err)
    	}
    	//retiver dictery
    	err = filepath.Walk(curdir, myWalkFunc)
    	if err != nil {
    		log.Fatalln(err)
    	}
    
    	i := 0
    	fmt.Scan(&i)
    }
    
    
  • 相关阅读:
    windows下wchar_t* 转char*
    VS2010的调试参数/Zi /DEBUG
    fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'X86'
    使用opencv传中文文件崩溃
    【20160924】GOCVHelper综述
    编译ITK
    几款开源图像处理软件评测研究
    新注册域名greenopen.site,向专业道路进军
    openmp在图像处理上面的运用
    实现multbandblend
  • 原文地址:https://www.cnblogs.com/jiftle/p/16125753.html
Copyright © 2020-2023  润新知