核心代码
package cmdimport ("fmt""zdpgo_cobra""zdpgo_file"
)func init() {rootCmd.AddCommand(deleteFileCmd)deleteFileCmd.Flags().StringVarP(&dirPath, "dir", "d", ".", "指定要删除的目录")deleteFileCmd.Flags().StringVarP(&suffix, "suffix", "s", "", "指定要删除的文件后缀")
}var (dirPath stringsuffix string
)// go run main.go file
var deleteFileCmd = &zdpgo_cobra.Command{Use: "file",Short: "删除文件",Long: `删除文件`,Run: func(cmd *zdpgo_cobra.Command, args []string) {err := zdpgo_file.DeleteFileBySuffix(dirPath, suffix)if err != nil {fmt.Println(err)}},
}
代码分析
这里主要使用的是我之前研发的zdpgo_file里面的根据文件后缀删除的方法。
命令行工具的主要框架使用的是zdpgo_cobra这个框架。
接收两个命令行参数:
-d
指定要删除的目录-s
指定要删除的文件后缀
编译程序
go build
因为我是在Windows上测试的,所以,得到的是.exe的可执行程序。
配置环境变量
先把这个可执行程序复制到一个固定的目录中,比如 G:/zdpbin
接着,把 G:/zdpbin 添加到PATH环境变量中。
测试
好戏登场了,我们去找一些需要删除的文件,删除一下试试。
我在下载目录下创建了test目录,然后创建了一些测试文件:
现在,我想要把所有.txt后缀的都删除掉,则执行:
del file -d . -s .txt
执行命令之前:
尴尬了,执行命令的时候发现这个命令和Windows的内置命令重叠了,所以改名叫zdel:
再来一遍,.txt 文件被删干净了:
再试试删除 .go 文件:
这里我省略了 -d
参数,因为这个参数有默认值,默认值就是 .
也就是当前文件夹。