windows批量获取目录下的文件名

学习这个小技巧源于编译opencv的时候生成了一堆lib,然后配置使用编译好的opencv就需要在项目属性里面输入这些库文件名,由于数量比较多,就查询了学习了个技巧。

实现批量获取目录下文件名所用到的命令是cmd的dir命令。

点击这里, ctr+F输入dir命令回车查询dir命令的用法


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
显示目录中的文件和子目录列表。

DIR [drive:][path][filename] [/A[[:]attributes]] [/B] [/C] [/D] [/L] [/N]

[/O[[:]sortorder]] [/P] [/Q] [/S] [/T[[:]timefield]] [/W] [/X] [/4]

[drive:][path][filename]

指定要列出的驱动器、目录和/或文件。

/A 显示具有指定属性的文件。

attributes D 目录 R 只读文件

H 隐藏文件 A 准备存档的文件

S 系统文件 - 表示“否”的前缀

/B 使用空格式(没有标题信息或摘要)。

/C 在文件大小中显示千位数分隔符。这是默认值。用 /-C 来

禁用分隔符显示。

/D 跟宽式相同,但文件是按栏分类列出的。

/L 用小写。

/N 新的长列表格式,其中文件名在最右边。

/O 用分类顺序列出文件。

sortorder N 按名称(字母顺序) S 按大小(从小到大)

E 按扩展名(字母顺序) D 按日期/时间(从先到后)

G 组目录优先 - 反转顺序的前缀

/P 在每个信息屏幕后暂停。

/Q 显示文件所有者。

/S 显示指定目录和所有子目录中的文件。

/T 控制显示或用来分类的时间字符域。

timefield C 创建时间

A 上次访问时间

W 上次写入的时间

/W 用宽列表格式。

/X 显示为非 8.3 文件名产生的短名称。格式是 /N 的格式,

短名称插在长名称前面。如果没有短名称,在其位置则

显示空白。

/4 用四位数字显示年

可以在 DIRCMD 环境变量中预先设定开关。通过添加前缀 - (破折号)

来替代预先设定的开关。例如,/-W。

所以


1
dir *.* > namelist.txt

可以获取到所有文件名, *在正则表达式里面表示匹配所有,所以该命令表示获取当前目录的所有文件名,然后写入到namelist.txt中。

使用这个命令有两种方法:

  • 该命令保存为getnamelist.bat文件拷贝到需要获取的目录下,双击运行即可。
  • 在需要获取的目录下打开cmd控制台(powershell亦可),输入该命令执行

例子1


1
dir *d.lib >dlist.txt

得到dlist.txt


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
    目录: D:\opencv\build\x86\vc15\lib

Mode LastWriteTime Length Name

---- ------------- ------ ----

-a---- 2018/3/13 13:00 312206 opencv_calib3d341d.lib

-a---- 2018/3/13 12:58 779688 opencv_core341d.lib

-a---- 2018/3/13 13:00 413252 opencv_dnn341d.lib

-a---- 2018/3/13 13:00 338554 opencv_features2d341d.lib

-a---- 2018/3/13 12:58 188640 opencv_flann341d.lib

-a---- 2018/3/13 12:59 227282 opencv_highgui341d.lib

-a---- 2018/3/13 12:59 193398 opencv_imgcodecs341d.lib

-a---- 2018/3/13 12:58 353958 opencv_imgproc341d.lib

-a---- 2018/3/13 12:58 241428 opencv_ml341d.lib

-a---- 2018/3/13 12:59 244924 opencv_objdetect341d.lib

-a---- 2018/3/13 12:58 272632 opencv_photo341d.lib

-a---- 2018/3/13 12:58 227296 opencv_shape341d.lib

-a---- 2018/3/13 13:00 734972 opencv_stitching341d.lib

-a---- 2018/3/13 12:59 281044 opencv_superres341d.lib

-a---- 2018/3/13 12:58 224504 opencv_video341d.lib

-a---- 2018/3/13 12:59 225766 opencv_videoio341d.lib

-a---- 2018/3/13 13:01 523394 opencv_videostab341d.lib

例子2


1
dir *341.lib >rlist.txt

得到rlist.txt


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
    目录: D:\opencv\build\x86\vc15\lib

Mode LastWriteTime Length Name

---- ------------- ------ ----

-a---- 2018/3/13 13:16 298302 opencv_calib3d341.lib

-a---- 2018/3/13 13:10 749186 opencv_core341.lib

-a---- 2018/3/13 13:13 404256 opencv_dnn341.lib

-a---- 2018/3/13 13:13 327564 opencv_features2d341.lib

-a---- 2018/3/13 13:11 180406 opencv_flann341.lib

-a---- 2018/3/13 13:12 219006 opencv_highgui341.lib

-a---- 2018/3/13 13:12 185238 opencv_imgcodecs341.lib

-a---- 2018/3/13 13:11 334216 opencv_imgproc341.lib

-a---- 2018/3/13 13:11 231654 opencv_ml341.lib

-a---- 2018/3/13 13:12 236368 opencv_objdetect341.lib

-a---- 2018/3/13 13:12 262200 opencv_photo341.lib

-a---- 2018/3/13 13:12 219306 opencv_shape341.lib

-a---- 2018/3/13 13:16 713258 opencv_stitching341.lib

-a---- 2018/3/13 13:12 271898 opencv_superres341.lib

-a---- 2018/3/13 13:12 215974 opencv_video341.lib

-a---- 2018/3/13 13:12 217696 opencv_videoio341.lib

-a---- 2018/3/13 13:16 513396 opencv_videostab341.lib

到这里似乎文件名都给获取到了,还可以根据自己写的正则疲惫过滤,但是还是不能用,因为没法直接复制txt文件的一列,解决办法就是把内容复制到一个world文档里面,选中内容,插入表格,复制一列,问题解决!

-------------本文结束感谢您的阅读-------------