提供一下 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