BAT批处理获取文件名
例如我们有这样一个文件夹,里边是音乐,里边有单独一个文件夹是英文歌曲,现在我们想获取文件夹里的文件名,该怎么做呢?其实,windows的bat批处理已经有提供一个很好的方案
bat批处理的运行方式比较简单,可以新建txt文件保存如下内容,并修改文件名和后缀,如 GetName.bat,双击即可运行
rem为remark的缩写,在bat批处理中为注释的意思,即运行批处理的时候 rem后边的内容不予运行
rem /b简洁模式,直接获取文件夹中的文件名,其中>为定向符号>>为追加,即>将结果覆盖并写入文件,>>将结果追加写入文件
dir/b > D:/name/name_1.txt
dir/b/s 英文歌曲 >> D:/name/name_2.txt
rem /s 递归
dir /s/b > D:/name/name_3.txt
rem 非简洁模式即把所有文件信息都打出来
dir /s > D:/name/name_4.txt
rem 只查找某些文件
rem 只查找 flac格式文件
dir /b | find ".flac" >D:/name/name_5.txt
rem 只查找包含“赤”字的文件
dir /b | find "赤" >D:/name/name_6.txt
rem /v 排除
dir D:\test\英文歌曲 /b |find /v "day" > D:/name/name_7.txt
由于我们没有使用绝对路径,所以我们需要把GetName.bat放入当前文件夹中运行,由于我们要比较name_1和name_2的区别,所以这里建议两次以上双击,运行之后我们打开 D:\name 文件夹,发现生成了我们所预料中的txt文件
我们分别打开查看
name_1列出了所有当前目录下的文件(其中文件夹被当作一个文件显示,并没有显示其下级内容)
name_2列出了 D:\test\英文歌曲 目录下的文件,而且由于双击了两次,>>就把文件名写入了两次
name_3列出了当前目录下的所有内容,并且把英文歌曲这个文件夹下的内容也列了出来,这就是递归
上边我们都用了/b简洁模式,name_4用非简洁模式,我们可以看到其列出了文件的所有信息
name_5、name_6都是筛选,放一起说5只查找flac文件,6只查找包含"赤"字的文件,这里需要注意:由于我们要查找中文,所以我们要先设置bat批处理的编码为UTF-8
name_7这里测试的是/v排除,这里排除了包含day的Day by Day 和 yesterday once more