提供一下 Go (golang) 的版本,照小州大的程式的逻辑重写
基本上,这件事用 Go 有点浪费
只是 Go 是最接近脚本语言的编译语言,刚好拿来练习一下
package main
import (
"fmt"
"io/ioutil"
"log"
"os"
"path/filepath"
"regexp"
)
func main() {
if len(os.Args) != 2 {
log.Fatal("No valid destination")
}
dest := os.Args[1]
path, err := filepath.Abs(dest)
if err != nil {
log.Fatal(err)
}
stat, err := os.Stat(path)
if os.IsNotExist(err) {
log.Fatal("Destination is not valid")
}
mode := stat.Mode()
if !mode.IsDir() {
log.Fatal("Destination is not a directory")
}
re := regexp.MustCompile("海贼王 第([0-9]+)集 繁体中文翻译.mp4")
fs, err := ioutil.ReadDir(dest)
if err != nil {
log.Fatal(err)
}
for _, f := range fs {
if !f.IsDir() {
match := re.FindStringSubmatch(f.Name())
var newFile string
if match != nil {
newFile = fmt.Sprintf("OnePiece v%s.mp4", match[1])
}
if newFile != "" {
oldPath := filepath.Join(path, f.Name())
newPath := filepath.Join(path, newFile)
err := os.Rename(oldPath, newPath)
if err != nil {
log.Fatal(err)
}
}
}
}
}
执行方式如下:
$ go run file.go /path/to/dest
这种事还是要用脚本语言才是正途 XD