微软的WINDOWS系统从Win32、Win95、Win98,发展到现在的Win10、Win11,视窗系统的所见及所得、设备的即插即用等优势,让电脑使用门坎大大降低,WINDOWS对电脑的普及功不可没。
现在提起DOS系统,可能只有一些老鸟才熟悉,更多的人可能第一印象,就觉得那是一个原始落后的系统,早就被淘汰了。其实,DOS系统一直不曾远去,它一直默默地陪伴着我们,它的有些功能远比WINDOWS来的强大。
比如:
用于列出当前目录和子目录下的所有文件的命令 DIR;
批量重命名命令REN;
用于显示计算机的IP地址、子网掩码和默认网关等网络信息的命令IPCONFIG
用于测试与另一个计算机的连接的命令PING,等等。
按Win+R,让我们进入WINDOWS的命令模式(其实就是以前的DOS模式),去看几个简单的命令:
CD命令:进入目录(目录也就是现在的文件夹)
cd\,回到根目录;
cd..,回到上一级目录。
有的人可能会说,这个命令还要记得要进入目录的文件名,有的甚至说,你进入一个中文目录我看看……
其实CD命令也一直在与时俱进,只要你输入CD命令,空一格,再按下Tab键,你会发现新大陆,什么文件名都不在话下。
另一个就是我非常喜欢也常用的,DIR的重定向命令。
输入dir /?会显示系统帮助:
显示目录中的文件和子目录列表。
DIR [drive:][path][filename] [/A[[:]attributes]] [/B] [/C] [/D] [/L] [/N]
[/O[[:]sortorder]] [/P] [/Q] [/R] [/S] [/T[[:]timefield]] [/W] [/X] [/4]
[drive:][path][filename]
指定要列出的驱动器、目录和/或文件。
/A 显示具有指定属性的文件。
属性 D 目录 R 只读文件
H 隐藏文件 A 准备存档的文件
S 系统文件 I 无内容索引文件
L 重新分析点 O 脱机文件
- 表示“否”的前缀
/B 使用空格式(没有标题信息或摘要)。
/C 在文件大小中显示千位数分隔符。这是默认值。用 /-C 来
禁用分隔符显示。
/D 跟宽式相同,但文件是按栏分类列出的。
/L 用小写。
/N 新的长列表格式,其中文件名在最右边。
/O 用分类顺序列出文件。
排列顺序 N 按名称(字母顺序) S 按大小(从小到大)
E 按扩展名(字母顺序) D 按日期/时间(从先到后)
G 组目录优先 - 反转顺序的前缀
/P 在每个信息屏幕后暂停。
/Q 显示文件所有者。
/R 显示文件的备用数据流。
/S 显示指定目录和所有子目录中的文件。
/T 控制显示或用来分类的时间字符域
时间段 C 创建时间
A 上次访问时间
W 上次写入的时间
/W 用宽列表格式。
/X 显示为非 8dot3 文件名产生的短名称。格式是 /N 的格式,
短名称插在长名称前面。如果没有短名称,在其位置则
显示空白。
/4 以四位数字显示年份
可以在 DIRCMD 环境变量中预先设定开关。通过添加前缀 - (破折号)
来替代预先设定的开关。例如,/-W。
从上面的内容可以看出,DIR命令的参数之多,功能之全。也许很少有人去看,其实也不用看,但当你想实现某种功能时,就可查看下能否用某个参数实现。
比如,我想将某个没有子文件夹的文件夹(后面我们统一用文件夹,不再用目录说法)中的所有文件名列份清单,并保存在一个文件中,WINDOWS好像没有办法,至少我是不会。
在命令模式下,就很容易:
进入该文件夹(现在你应明白我前面为什么要讲CD命令了)
dir /b >001.txt
在WINDOWS下进入该文件夹,就会发现你面有个001.txt的文件,里面包含了所有文件的文件名,甚至还包含001.txt它自己(要想不包含它自己,可以将001.txt放在别的文件夹中)。
那么,如果在PYTHON中,想将某文件夹中所有文件的文件名放在一个TXT文档中,再统计其中的文件数量,或者某个文本在文件名中出现的频次,如何实现呢?
在PYTHON中,专门有个OS内置模块,专门用来处理这些命令。
用法: os.system(command)
如前面所说,将某个文件夹中的所有文件名列份清单,并保存在一个文件中,即可用如下代码实现:
import os
cmd = r'dir C:\Windows\Fonts /b >C:\Users\78*****\Desktop\文件清单.txt' # 78*****是用户名
# cmd = 'dir C:\\Windows\\Fonts /b >C:\\Users\\78*****\\Desktop\\文件清单.txt'
os.system(cmd)
运行结果:
这里主要注意对文件夹的路径中反斜杠\的处理:
1、用原始字符串表示方法,如上面代码中的第二行;
2、采用转义字符\\来代替,如上面代码中的第三行;
3、用斜杠/代替,如下图。
os.system('c:/windows/system32/ipconfig /all>information.txt') # 获取网络信息