zoukankan      html  css  js  c++  java
  • 探索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:WorkspaceOracle:

    cd d:WorkspaceOracle
    

    将当前目录改变为 d:WorkspaceOracle,同时将磁盘改变为 D 盘:

    cd /d d:WorkspaceOracle
    

    将当前目录改为上一级目录:

    cd ..
    

    Windows 目录标识符一览表:

    符号 中文名 含义
    . 一个点 代表当前目录
    .. 两个点 代表上一级目录
    |反斜线 代表当前磁盘的根目录

    1.4、MD(make directory)命令

    在当前目录创建“测试”目录:

    md 测试
    

    在当前目录创建 c 目录,如果中级目录 a 和 b 不存在,也会被创建:

    md ac
    

    会创建一个和当前目录平级的 a 目录,并在 a 中创建 b 和 c:

    md ac
    

    在当前目录创建 .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:Workspace1.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
    版权声明:本文为博客园博主 韩宗泽 原创,作者保留署名权!欢迎通过转载、演绎或其它传播方式来使用本文,但必须在明显位置给出作者署名和本文链接!个人博客,能力有限,若有不当之处,敬请批评指正,谢谢!

  • 相关阅读:
    〖Python〗-- Tornado自定义session组件
    〖Python〗-- Tornado异步非阻塞
    〖Python〗-- Tornado基础
    〖Python〗-- Flask
    〖Python〗-- 设计模式
    〖Python〗-- Celery分布式任务队列
    〖Demo〗-- CosPlayPermission
    05——wepy框架中的一些细节
    04——wepy框架搭建
    03——微信小程序官方demo讲解——page部分
  • 原文地址:https://www.cnblogs.com/hanzongze/p/cmd-files.html
Copyright © 2011-2022 走看看