探索Windows命令行系列(4):通过命令管理文件和文件夹
DOS 最核心的功能之一就是管理文件和目录。文件就是一组有序符号的集合,而目录则用于存放文件,主要是为了更好的管理文件。
在 DOS 中,文件命名规则是 8.3 格式,即每个文件的名字由文件基本名和文件扩展名组成,中间用一个点(.)隔开。文件基本名由 1~8 个字符组成,文件扩展名由 0~3 个字符组成;也就是说,基本名必须有,扩展名可以没有,在没有扩展名时分隔的点也随之省去。文件名可以写成大写或小写的形式,但调用时不区分大小写,部分特殊字符不能用来命名。
为了简化对多个文件做相同的操作,DOS 中引入了通配符——问号(?)和星号(*),又称作集合文件名。问号表示任意一个合法字符,星号表示任意多个合法字符。
后来的 Windows 在文件名规则上继承了 DOS,并在此基础之上做了进一步的扩展。最明显的变化就是文件基本名可以多于 8 个字符,而文件扩展名也可以多于 3 个字符,此外,DOS 中的“目录”在 Windows 中叫做“文件夹”。
1、文件夹操作
主要文件夹操作命令一览表
序号 | 命令 | 功能 | 备注 |
---|---|---|---|
1 | dir | 显示指定目录中的文件和子目录列表 | |
2 | tree | 以树形显示指定路径的目录结构 | |
3 | cd/chdir | 显示当前目录名或改变当前目录 | |
4 | md/mkdir | 创建目录 | 不能创建已存在的目录 |
5 | rd/rmdir | 删除目录 |
1.1、DIR(directory)命令
显示当前目录中的文件和子目录列表:
dir
显示 D 盘中的文件和子目录列表:
dir d:
显示当前目录下的 d 目录中的文件和子目录列表:
dir d
显示当前目录中所有文本文件列表:
dir *.txt
显示当前目录中所有文本文件的文件名列表:
dir /b *.txt
分屏显示,在每个信息屏幕后暂停:
dir /p
用宽列表格式显示简易目录信息列表:
dir /w
显示列表的排序命令和规则:
dir /og 按名称(组目录)递增排序,直接写 dir 就是这种效果
dir /on 按名称(字母顺序)递增排序,直接写 dir /o 就是这种效果
dir /od 按日期(从先到后)递增排序
dir /oe 按扩展名(字母顺序)递增排序
上述 4 种排序中,比较常用的是第 1 种和第 3 种,这两种排序分别对应 Windows 中的按名称和按日期排序。第 2 种排序与第 1 种排序稍有不同,特殊符号会排到数字和字母前面,与 Windows 规则不同,因此不建议使用。
1.2、TREE 命令
以树形显示当前目录中的所有子目录:
tree
以树形显示当前目录中的所有文件和子目录:
tree /f
以树形显示 D 盘中所有子目录:
tree d:
以树形显示当前目录下的“测试”目录中的所有子目录:
tree 测试
1.3、CD(change directory)命令
显示当前磁盘和目录名:
cd
显示指定磁盘中的当前目录名:
cd c:
将当前目录改变为(当前目录下的)a 目录:
cd a
将当前目录改变为 d:\Workspace\Oracle:
cd d:\Workspace\Oracle
将当前目录改变为 d:\Workspace\Oracle,同时将磁盘改变为 D 盘:
cd /d d:\Workspace\Oracle
将当前目录改为上一级目录:
cd ..
Windows 目录标识符一览表:
符号 | 中文名 | 含义 |
---|---|---|
. | 一个点 | 代表当前目录 |
.. | 两个点 | 代表上一级目录 |
|反斜线 | 代表当前磁盘的根目录 |
1.4、MD(make directory)命令
在当前目录创建“测试”目录:
md 测试
在当前目录创建 c 目录,如果中级目录 a 和 b 不存在,也会被创建:
md a\b\c
会创建一个和当前目录平级的 a 目录,并在 a 中创建 b 和 c:
md \a\b\c
在当前目录创建 .NET 目录(注意:该操作是无法通过鼠标右键完成的):
md .NET
1.5、RD(remove directory)命令
删除当前目录中的“测试”目录:
rd 测试
注意,上述命令执行成功还得满足如下 4 个前提条件:
- 1、要删除的目录里不能再有子目录。
- 2、要删除的目录内不能有任何文件。
- 3、不能删除当前目录。
- 4、根目录不能被删除。
上述 4 句话也可以用一句话来总结——必须是空目录、非当前目录、非根目录才能删除。
删除目录树。除目录本身外,还将删除指定目录下的所有子目录和文件:
rd a /s
安静模式,无需确认直接删除:
rd a /s /q
2、文件操作
主要文件操作命令一览表:
序号 | 命令 | 功能 | 备注 |
---|---|---|---|
1 | type | 显示文本文件的内容 | |
2 | more | 逐屏显示输出 | |
3 | ren | 重命名文件 | |
4 | attrib | 显示或更改文件属性 | |
5 | copy | 将一个或多个文件复制到另一个位置 | |
6 | xcopy | 复制文件和目录树 | |
7 | del/erase | 删除一个或多个文件 | |
8 | find | 在文件中搜索字符串 | 支持 Unicode 格式 |
9 | findstr | 在文件中搜索字符串 | 支持正则表达式 |
2.1、TYPE 命令
在命令行窗口中显示 1.txt 文件的内容:
type 1.txt
在命令行窗口中分屏显示 1.txt 文件的内容:
type 1.txt|more
2.2、MORE 命令
在命令行窗口中逐屏显示输出 1.txt 中的内容:
more < 1.txt
注意:more 后面是小于号,而不是大于号,笔者就曾不小心把小于号写成大于号,结果收集整理多天的资料瞬间就没了,立马 Ctrl+Z 都无法恢复了。
先清除屏幕,再在命令行窗口中逐屏显示输出 1.txt 中的内容:
more < 1.txt /c
2.3、REN(rename)命令
将 1.txt 的文件名改成 2.txt:
ren 1.txt 2.txt
2.4、ATTRIB(attribute)命令
显示当前目录及其子目录中名为 1.txt 的文件列表:
attrib 1.txt /s
为 1.txt 文件添加只读属性:
attrib +r 1.txt
去除 1.txt 文件中的只读属性:
attrib -r 1.txt
为 1.txt 文件添加隐藏属性:
attrib +h 1.txt
2.5、COPY 命令
创建 1.txt 文件的副本 2.txt:
copy 1.txt 2.txt
合并 1.txt 和 2.txt 的内容,保存为 3.txt:
copy 1.txt + 2.txt 3.txt
复制文件到自己,实际上是修改了文件日期:
copy 1.txt +
将当前目录中所有名称以 a 开头的文本文件中的内容合并到 all.txt 文件中去。
copy a*.txt all.txt
2.6、XCOPY 命令
将 D 盘 a 目录中所有文件及目录复制到 E 盘的 1 目录中:
xcopy d:\a e:\1 /s /e /y
2.7、DEL(delete)命令
删除当前目录下的 1.txt 文件(还可以带路径,譬如当前目录为 D:\Workspace,则可以写成del D:\Workspace\1.txt
):
del 1.txt
删除当前目录下的所有文本文件(还可以指定目录,譬如D:\Workspace\*.txt
则是指删除 D:\Workspace 目录下的所有文本文件):
del *.txt
删除当前目录下所有文本文件,且会在删除每一个文件之前提示确认:
del /p *.txt
强制删除当前目录下的所有文本文件,包括只读文件(如果仅删除只读文件则用del /a:r *.txt
):
del /f *.txt
删除当前目录及其子目录下的所有文本文件(不会删除目录):
del /s *.txt
删除当前目录及其子目录下的所有隐藏的文本文件:
del /a:h *.txt
删除 D 盘 Workspace 目录下的所有文件:
del D:\Workspace /q
2.8、FIND 命令
查找 test.txt 文件中包含字符串"显示"的所有行,参数 /n 表示显示行号:
find /n "显示" test.txt
统计 test.txt 文件中包含字符串"显示"的总行数:
find /c "显示" test.txt
在 D:\Workspace 目录中检索文件名包含 cmd 的文件:
dir D:\Workspace /s /b | find "cmd"
检索当前目录中的扩展名为 .bat 并包含字符串“echo off”的文件(不会检索当前目录的子目录):
for %f in (*.bat) do find "echo off" %f
2.9、FINDSTR 命令
在 test.txt 文件中检索包含“显示”的行:
findstr "显示" test.txt
在 test.txt 文件中检索包含 f 或 d 的行(不支持检索中文):
findstr "f d" test.txt
在当前目录及其所有子目录的文本文件中查找包含“cmd”的内容:
findstr /s /i "cmd" *.txt
在 D:\Workspace 目录及其所有子目录的文本文件中查找包含“cmd”的内容:
findstr /s /i "cmd" D:\Workspace\*.txt
3、总结
本文主要讲述了如果通过 Windows 命令来操作文件和文件夹,并提供了常见命令的主要功能的相关示例。
本文链接:http://www.cnblogs.com/hanzongze/p/cmd-files.html
版权声明:本文为博客园博主 韩宗泽 原创,作者保留署名权!欢迎通过转载、演绎或其它传播方式来使用本文,但必须在明显位置给出作者署名和本文链接!个人博客,能力有限,若有不当之处,敬请批评指正,谢谢!
探索Windows命令行系列(4):通过命令管理文件和文件夹的更多相关文章
- 探索Windows命令行系列(3):命令行脚本基础
1.实用功能 1.1.为脚本添加注释 1.2.控制命令的回显 1.3.使用数学表达式 1.4.向脚本传递参数 2.使用变量 2.1.变量的命名及定义 2.2.调用变量 2.3.变量的作用域 3.结构语 ...
- 探索Windows命令行系列(2):命令行工具入门
1.理论基础 1.1.命令行的前世今生 1.2.命令执行规则 1.3.使用命令历史 2.使用入门 2.1.启动和关闭命令行 2.2.执行简单的命令 2.3.命令行执行程序使用技巧 3.总结 1.理论基 ...
- 探索Windows命令行系列(5):几个实用的命令例解
1.关机命令(shutdown) 2.管理 Windows 服务(sc) 3.管理任务进程(tasklist.taskkill) 4.显示 TCP/IP 配置值(ipconfig) 5.网络诊断工具( ...
- 探索Windows命令行系列(1):导航目录
探索Windows命令行系列(1):导航目录 探索Windows命令行系列(2):命令行工具入门 探索Windows命令行系列(3):命令行脚本基础 探索Windows命令行系列(4):通过命令操作文 ...
- 探索Windows命令行系列(4):通过命令操作文件和文件夹
1.文件夹操作 1.1.DIR(directory)命令 1.2.TREE 命令 1.3.CD(change directory)命令 1.4.MD(make directory)命令 1.5.RD( ...
- windows下命令行模式中cd命令无效的原因
当我们执行cmd 想切换当前工作目录时,会发现windows下命令行模式中cd命令没有生效,到底是什么原因呢? 例如: 当我们想切换到 D:\MySql\mysql-5.7.19-winx64\bin ...
- Windows命令行command的Shell命令详细解析和语法
CMD命令大全及详细解释和语法 Microsoft Windows XP [版本 5.1.2600] 有关某个命令的详细信息,请键入 HELP 命令名 ASSOC 显示或修改文件扩展名关联. A ...
- linux命令行下svn常用命令
linux命令行下svn常用命令 1. 将文件checkout到本地目录 1 #path是服务器上的目录 2 svn checkout path 3 4 #示例 5 svn checkout svn: ...
- php命令行模式下加载的php.ini文件可能和web模式下加载的php.ini不一致
php命令行模式下加载的php.ini文件可能和web模式下加载的php.ini不一致 命令行下查看加载的php.ini的路径: php -i|grep php.ini web模式下查看: <? ...
随机推荐
- django无法加载admin的静态内容的问题(Centos7+Nginx+uwsgi环境下)
Nginx静态资源无法加载,导致admin没有CSS样式: 这个问题,主要是要理解: 1.Django不会去解析静态内容(css,js,img)等,而是交给Nginx去处理,所以nginx.conf要 ...
- BM算法详解
http://www-igm.univ-mlv.fr/~lecroq/string/node14.html http://www.cs.utexas.edu/users/moore/publicati ...
- 为Android内核添加新驱动
转载地址:http://blog.chinaunix.net/uid-16759545-id-4892379.html 1. 在drives目录下添加hello目录,内含hello.c Kconfig ...
- 开发一个Servlet示例
Servlet响应请求步骤: Servlet是一个基于Java技术的Web组件,运行在服务器端,用户利用Servlet可以很轻松地扩展Web服务器的功能,使其满足特定的应用需要.Tomcat是一个常用 ...
- Java UDP Socket
本文转载地址: Java学习路上的收获:http://blog.csdn.net/qinpeng100423/article/details/8980423 一. UDP协议定义 U ...
- 从 art-template 模版维护到动态加载的思考
自己用 art-template 有些年头了,最近在培养团队学习 art-template 使用,发现有一个痛点比较难解决. 比如有一个模版,我们可以直接写在页面中,像这样: <script i ...
- redis 清空缓存
redis 清空缓存 Redis 命令: flushall --> 清空整个 Redis 服务器的数据(删除所有数据库的所有 key ) flushdb --> 清空当前数据库中的所有 k ...
- Python列表(一)
列表由一系列特定顺序排列的元素组成,在python中使用[]来表示列表,并用,来进行元素分割. >>> name_list['alben', 'james', 'harden', ' ...
- OpenCV探索之路(十六):图像矫正技术深入探讨
刚进入实验室导师就交给我一个任务,就是让我设计算法给图像进行矫正.哎呀,我不太会图像这块啊,不过还是接下来了,硬着头皮开干吧! 那什么是图像的矫正呢?举个例子就好明白了. 我的好朋友小明给我拍了这几张 ...
- ELK菜鸟手记 (四) - 利用filebeat和不同端口把不同服务器上的log4j日志传输到同一台ELK服务器
1. 问题描述 我们需要将不同服务器(如Web Server)上的log4j日志传输到同一台ELK服务器,介于公司服务器资源紧张(^_^) 2. 我们需要用到filebeat 什么是filebeat ...