• 【批处理DOS-CMD命令-汇总和小结】-文件与目录操作命令(md、rd、xcopy、dir、cd、set、move、copy、del、type、sort)


    一、目录操作命令

    1.1 新建和删除目录——md、rd、xcopy

    • 新建文件夹:md test(效果同MKDIR test,注意不是mk test)
    • 删除目录:rd test
    • 复制目录:xcopy %Directory% %Directory2%

    1.2 设置和使用目录变量——set

    • 设置目录变量:set Directory=F:\test;
    • 设置文件路径变量:set filepath=test1\file.exe
    • 调用目录变量:%Directory%。
    • 设置好变量后,任何变量需要搭配其他指令一起使用。比如搭配del命令使用,del "%Directory%\%filepath%"等价于del "F:\test\test1\file.exe"。

    1.3 显示目录结构/文件树——dir、tree

    1.3.1 显示文件/目录列表:dir

    在win10系统的cmd窗口中,要显示当前目录下的文件、文件夹信息,可以用dir命令。

    要显示目标目录下的信息,可以先切换工作目录(cd命令或其他方式)为目标目录,然后再用dir。

    或者直接执行命令【dir 目标目录】,比如我要显示百度网盘下载文件夹的文件目录信息。

    linux系统中,要显示某一个目录下的文件(夹)列表,可以用ls命令,当然也可以用dir命令。

    1.3.2 显示树级目录结构——tree

    下面继续讲解windows中cmd窗口中的tree指令。

    Windows+R 输入cmd命令,我们直接在窗口输入help tree,就可看到帮助信息:

    •  tree : 显示当前目录下所有子级文件夹树级结构(不包括文件)。
    •  tree D:\ChromeCoreDownloads\test : 显示指定目录下所有子级文件夹树级结构(不包括文件)。
    •  tree D:\ChromeCoreDownloads\test /f :显示指定目录下所有子级文件夹树级结构(包括文件)。
    •  tree D:\ChromeCoreDownloads\test /f /a:作者在测试时,没发现加/a和不加/a的显著区别。
    •  tree D:\ChromeCoreDownloads\test /f > tree.txt:将指定目录下所有子级文件夹树级结构(包括文件)信息写入当前目录下的tree.txt文件。
    •  tree D:\ChromeCoreDownloads\test /f > D:\ChromeCoreDownloads\test\tree.txt:将指定目录下所有子级文件夹树级结构(包括文件)信息写入指定目录下的tree.txt文件。

    tips:windows下的tree指令功能不够强大,可以下载git tree shell来补充这方面的功能,比如如果文件太多时,可以只显示指定目录向下两级的文件夹层级结构信息。

    1.4 查找目录下的某文件或文件夹

    dir的常规用法是查找某目录下有哪些文件或文件夹,更加“费电脑”的用法是查找某目录下的指定名称的文件(夹)各分布在哪里、大小各是多少、总共统计出来的数目是多少。

    比如我想查找百度网盘下载文件夹下有多少个demo.bat文件,就可以先执行命令【cd /d D:\BaiduNetdiskDownload】来切换当前工作目录,然后再执行命令【dir demo.bat】,最终结果如下图所示。

     非常奇怪,按道理也可以查找某目录下有多少指定名称的文件夹,但是实际却没办法做到。

    1.5 切换目录,进入指定文件夹——cd或chdir

    标题已经写得足够明白,cd命令和chdir命令是完全等价的。

    打印cd命令的帮助信息,我们可以知道cd命令是用来显示当前工作目录和切换工作目录的。

    1. C:\WINDOWS\system32>cd /?
    2. 显示当前目录名或改变当前目录。
    3. CHDIR [/D] [drive:][path]
    4. CHDIR [..]
    5. CD [/D] [drive:][path]
    6. CD [..]
    7. .. 指定要改成父目录。
    8. 键入 CD drive: 显示指定驱动器中的当前目录。
    9. 不带参数只键入 CD,则显示当前驱动器和目录。
    10. 使用 /D 开关,除了改变驱动器的当前目录之外,
    11. 还可改变当前驱动器。
    12. 如果命令扩展被启用,CHDIR 会如下改变:
    13. 当前的目录字符串会被转换成使用磁盘名上的大小写。所以,
    14. 如果磁盘上的大小写如此,CD C:\TEMP 会将当前目录设为
    15. C:\Temp。
    16. CHDIR 命令不把空格当作分隔符,因此有可能将目录名改为一个
    17. 带有空格但不带有引号的子目录名。例如:
    18. cd \winnt\profiles\username\programs\start menu
    19. 与下列相同:
    20. 请按任意键继续. . .

    1.5.1 直接执行不带参数的【cd】,会返回当前工作目录。

    有些人可能会觉得这个命令好智障,明明好明显能看到,为啥还要有?

    其实在echo回显状态关闭时,工作目录是不会显示在cmd窗口上的。

    1.5.2 不切换磁盘,只在当前磁盘“转悠”

    • 进入文件夹:cd \test1\test2(进入 test2 文件夹)
    • 返回根目录(磁盘目录):cd \
    • 回到上级目录:cd ..

    1.5.3 切换磁盘,就需要先转盘

    如果你要切换的目标路径和当前工作目录所在磁盘不同,那么就需要切换磁盘。

    方式1:先执行切换磁盘命令(例如D盘对应命令【d:】),然后再用cd命令(例如进入d盘的百度下载文件夹BaiduNetdiskDownload,执行命令【cd /BaiduNetdiskDownload】或【cd d:/BaiduNetdiskDownload】)进入目标目录。

    方式2:直接带参数/d执行包括完整目录路径的命令,例如想要进入目标文件夹d:/BaiduNetdiskDownload,可以执行【cd /d d:/BaiduNetdiskDownload】命令。

    注意1,方式2中的/d参数是固定的,不论对哪个盘而言都是/d。不是说对于目标目录e:/BaiduNetdiskDownload,就应该执行命令【cd /e d:/BaiduNetdiskDownload】,这是错误的!

    注意2,命令【cd d:】是无法切换磁盘至D盘的,虽然它会输出一个d:,但不代表工作目录被切换、。

    上面用cd命令切换工作目录,其实是比较麻烦的,最方便的方法还是在资源管理器中进入目标文件夹后,在地址栏中执行cmd即可。

     

    二、文件外部操作——move、copy、del或erase、rename或ren

    2.1 移动文件——move

    打印move命令的帮助信息,执行命令【move /?】。

    我们可以发现,move命令不仅可以将文件从路径A移动到路径B,而且可以在移动的过程中对文件进行重命名,甚至还能对一个文件夹进行重命名。 

    假如,我的电脑中的【D:\BaiduNetdiskDownload】目录和【D:\D-desktop】目录下各有一个demo.bat文件。

    如果我想要将【D:\BaiduNetdiskDownload】目录下的文件移动到【D:\D-desktop】目录,我可以执行以下命令【move demo.bat D:\D-desktop】,然后cmd窗口中提示是否覆盖,我再执行y,就移动并覆盖成功了。

    如果我还想要重命名这个文件为【demo1.bat】,我可以执行命令【move demo.bat D:\D-desktop\demo1.bat】。 

    总结起来就是,如果你在移动一个文件,不想要重命名,那么目标路径中就不用包括文件名(也不需要保留原文件名);如果你想要重命名,就需要包括文件名

    参数/y和-y的意思:如果不指定这两个参数之一,就默认是在直接命令中提示、在批处理文件中不提示,如果指定为/y,就都不提示直接覆盖,如果指定为-y,就都提示,可以让你手动选择是否覆盖。

    2.2 复制文件——copy

    打印copy命令的帮助信息,执行命令【copy /?】。

    copy的命令在常规用法上和move命令别无二致。

    如果只是复制文件到另一个目录,而不更改命名,也不需要在目标路径上包括文件名,例如命令【copy F:\directory1\test.txt D:\directory2】。

    如果需要在复制至另一目录的同时,加以重命名,就需要在目标路径包括文件名,例如命令【copy F:\directory1\test.txt D:\directory2\test1.txt】。

    2.3 删除文件——del或erase

    del命令和erase命令等效;但是命令扩展功能开启后,才可用erase命令。

    (1)打印del命令的帮助信息,执行命令【del /?】。

    (2)假如我们要删除某个文件,直接执行命令【del filepath】,filepath是完整路径。

    比如,我们要删除百度网盘下载文件夹下的demo.bat文件,就可以执行命令【del D:\BaiduNetdiskDownload\demo.bat】

     注意,虽然没有任何回馈结果表示已经删除,但其实已经删除成功了。

    (3)假如要删除某个文件夹,我们可以执行命令【del directory_path】,建议文件夹路径也设置完整。

    假设在D盘有一个test文件夹,里面又有一个demo.bat,可以执行命令【del D:\test】,而后再用y回复确认删除。

    命令执行完毕,我们可以发现目录下的文件是没了,但是文件夹本身还恋恋不舍地待在电脑上。

    我猜(够严谨吧...):del命令只能删除指定目录以及子目录下的文件

     

    我又在test文件夹内创建了一个test1文件夹,再用命令【del D:\test】实验了一下,果真如此呢!

     

    linux系统中,删除文件/目录的指令是rm。

    语法:rm [选项] 
    • -d:直接把欲删除的目录的硬连接数据删除成0,删除该目录;
    • -f:强制删除文件或目录;
    • -i:删除已有文件或目录之前先询问用户;
    • -r或-R:递归处理,将指定目录下的所有文件与子目录一并处理;
    • –preserve-root:不对根目录进行递归操作;
    • -v:显示指令的详细执行过程。

    2.4 重命名文件——rename或ren

    (1)先打印ren的帮助信息,执行命令【ren /?】

    (2) 假如当前工作目录中包括重命名文件,直接用命令【rename filename1 filename2 】即可。

     

    (3)假如当前工作目录中不包括,可以先切换工作目录(cd命令等),然后再用(2)中提到的命令,也可以直接用命令【rename filepath new_filename】。

    下面3张图,就是演示如何直接用命令【ren D:\test\test1\demo1.bat demo2.bat】,把处于目录【D:\test\test1】下的demo.bat文件重命名成demo2.bat的。

    三、文件内部操作——type、sort

    3.1 读取文本文件——type

    先看一下type的帮助信息。

    由此可见,type的作用就是来读取文件的内容的,内容可以参考“以记事本方式”打开的情况,如果是txt、md、bat这种纯文本文件,打开后没有乱码,但如果是doc、excel、exe、jpg、mp3、mp4这种二进制文件,打开后必然是乱码。

    type只对纯文本文件有意义,因为如果打开的是乱码,看不懂呀!

    读取文本文件最基本的命令格式【type filepath】,尝试打开某bat文件,称心如意。

     心不甘地打开某doc文档,看行不?输得一败涂地...

    在Linux系统中,与type命令相对应的是cat命令。

    3.2 排序文本文件——sort

    先打印一下sort命令的帮助信息。

     (1)最基本的不带任何参数的sort命令——sort filepath 。

    假设桌面存在一个tool.txt的文本文件,内容如下:

    现在我想要对其进行排序和整理。执行命令【sort D:\D-desktop\tool.txt】,得到结果如下图。 

     

    我们可以发现31在4的前面,说明这个排序算法优先对第一位进行,如果第一位已经决出先后就不再比较。

     注意,这个sort命令不会改变原txt文件的内容,只是输出的结果改变了而已,如果想要把已排序好的内容放在新的txt文件中,可以执行重定向命令【sort D:\D-desktop\tool.txt>D:\D-desktop\tool
    _sorted.txt】。

    (2)如果想要从第n位开始排序,通过调整/n参数实现,假如想从第2位开始排序,执行命令【sort /+2 D:\D-desktop\tool.txt】

     (3)如果想要逆序排序,可以添加/r参数,执行命令【sort /r D:\D-desktop\tool.txt】

  • 相关阅读:
    01.qtcreator介绍
    python中几个常用函数
    论文阅读——ONE-PEACE
    平面点云,边界提取
    模拟实现队列(顺序队列和链式队列)
    Mybatis-Plus CRUD
    【MindSpore易点通】如何保存模型进行checkpoint对比以及Print算子使用说明
    eclipse
    Python学习笔记(五)
    【一篇就够】CSS隐藏页面元素方式
  • 原文地址:https://blog.csdn.net/PSpiritV/article/details/125436429