Go语言-批量删除文件的命令行程序delete_tool.exe
Posted 阿拉的梦想
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go语言-批量删除文件的命令行程序delete_tool.exe相关的知识,希望对你有一定的参考价值。
Go语言-批量删除文件的命令行程序delete_tool.exe
前言:自写自用的一个小工具。使用golang写的一个可以根据输入目录删除批量文件的命令行应用。
主要功能:
- 删除指定目录下的文件夹
- 删除指定目录下特定后缀的文件
下面就开始贴代码了,完整代码,复制可用。
工程目录
main.go
package main
import (
"demo2/deleteJars"
"fmt"
)
var (
option int
)
func main() {
for {
fmt.Println("====批处理程序====")
fmt.Println("1.删除指定目录下的文件夹")
fmt.Println("2.删除指定目录下特定后缀的文件")
fmt.Printf("请输入操作序号: ")
fmt.Scanln(&option)
if 1 == option {
delete.DelDirs()
} else if 2 == option {
delete.DelFileBySuffix()
} else {
fmt.Println("此功能正在开发中...")
}
fmt.Println(" ")
}
}
删除指定目录下的文件夹DelDirs.go
package delete
import (
"fmt"
"io/ioutil"
"os"
"path/filepath"
)
//计数
//1.删除指定目录下的文件夹
func DelDirs() {
var (
delDir string
dir string
flag bool
)
fmt.Printf("输入根目录,如(D:\\\\test): ")
fmt.Scanln(&dir)
fmt.Printf("输入要删除的文件名: ")
fmt.Scanln(&delDir) //Scanln 扫描来自标准输入的文本,将空格分隔的值依次存放到后续的参数内,直到碰到换行。
// fmt.Scanf("%s %s", &firstName, &lastName) //Scanf与其类似,除了 Scanf 的第一个参数用作格式字符串,用来决定如何读取。
fmt.Println("要在目录", dir, "下删除", delDir, "目录?(true/false)")
fmt.Scanln(&flag)
if flag {
fmt.Println("开始遍历并删除目录...")
count = 0
findAndDelDirs(dir, delDir)
fmt.Printf("结束根据后缀删除文件,共删除[%d]个文件", count)
fmt.Println("结束遍历并删除目录")
}
}
func findAndDelDirs(dir string, delDir string) {
rd, _ := ioutil.ReadDir(dir)
for _, fi := range rd {
if fi.IsDir() && fi.Name() == delDir {
toDelDir := dir + string(filepath.Separator) + fi.Name()
fmt.Printf("删除目录[%s]\\n", toDelDir)
os.RemoveAll(toDelDir)
}
if fi.IsDir() {
findAndDelDirs(dir+string(filepath.Separator)+fi.Name(), delDir)
}
}
}
删除指定目录下特定后缀的文件DeleteFileBySuffix.go
package delete
import (
"fmt"
"io/ioutil"
"os"
"path/filepath"
"strings"
)
//计数
var count int
//2.删除指定目录下特定后缀的文件
func DelFileBySuffix() {
var (
dir string
flag bool
)
fmt.Printf("输入根目录如(D:\\\\test): ")
fmt.Scanln(&dir)
fmt.Printf("输入要删除的文件后缀: ")
var suffix string
fmt.Scanln(&suffix)
fmt.Printf("要在[%s]下删除后缀[%s]的所有文件?(true/false)\\n", dir, suffix)
fmt.Scanln(&flag)
if flag {
fmt.Println("开始根据后缀删除文件")
count = 0
WalkDir(dir, suffix)
fmt.Printf("结束根据后缀删除文件,共删除[%d]个文件", count)
}
}
/* 获取指定路径下以及所有子目录下的所有文件,可匹配后缀过滤(suffix为空则不过滤)*/
func WalkDir(dir, suffix string) {
rd, _ := ioutil.ReadDir(dir)
for _, fi := range rd {
if fi.IsDir() {
WalkDir(dir+string(filepath.Separator)+fi.Name(), suffix)
} else {
if strings.HasSuffix(fi.Name(), suffix) {
toDelFile := dir + string(filepath.Separator) + fi.Name()
fmt.Printf("删除文件[%s]\\n", toDelFile)
os.Remove(toDelFile)
count++
}
}
}
}
运行效果
====批处理程序====
1.删除指定目录下的文件夹
2.删除指定目录下特定后缀的文件
请输入操作序号: 2
输入根目录如(D:\\test): D:\\test\\delBySuffix
输入要删除的文件后缀: .bmp
要在[D:\\test\\delBySuffix]下删除后缀[.bmp]的所有文件?(true/false)
true
开始根据后缀删除文件
删除文件[D:\\test\\delBySuffix\\a.bmp]
删除文件[D:\\test\\delBySuffix\\c\\a.bmp]
结束根据后缀删除文件,共删除[2]个文件
====批处理程序====
1.删除指定目录下的文件夹
2.删除指定目录下特定后缀的文件
请输入操作序号:
以上是关于Go语言-批量删除文件的命令行程序delete_tool.exe的主要内容,如果未能解决你的问题,请参考以下文章