后台-插件-广告管理-内容页广告位一(手机)

您现在的位置是:首页 > 其他 > 物联网物联网

Go语言-批量删除文件的命令行程序delete_tool.exe

2021-06-07 21:00:07物联网人已围观

简介前言:自写自用的一个小工具。使用golang写的一个可以根据输入目录删除批量文件的命令行应用。下面就开始贴代码了,完整代码,复制可用。

Go语言-批量删除文件的命令行程序delete_tool.exe

  • 工程目录
  • main.go
  • 删除指定目录下的文件夹DelDirs.go
  • 删除指定目录下特定后缀的文件DeleteFileBySuffix.go
  • 运行效果

前言:自写自用的一个小工具。使用golang写的一个可以根据输入目录删除批量文件的命令行应用。

主要功能:

  1. 删除指定目录下的文件夹
  2. 删除指定目录下特定后缀的文件

下面就开始贴代码了,完整代码,复制可用。

工程目录

在这里插入图片描述

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.删除指定目录下特定后缀的文件
请输入操作序号:

源码和exe下载

文章来源:https://blog.csdn.net/A434534658/article/details/117598072

Tags:Go 

很赞哦! ()

后台-插件-广告管理-内容页广告位二(手机)

相关文章

后台-插件-广告管理-内容页广告位三(手机)

随机图文

后台-插件-广告管理-内容页广告位四(手机)

文章评论

留言与评论(共有 0 条评论)
   
验证码:

本栏推荐

站点信息

  • 文章统计60237篇文章
  • 浏览统计4607次浏览
  • 评论统计1个评论
  • 标签管理标签云
  • 统计数据:统计代码
  • 微信公众号:扫描二维码,关注我们