DOS(磁盘操作系统)是一个早期的基于命令行的操作系统,尽管现代操作系统已经发展为图形用户界面(GUI),但是了解和掌握一些基本的DOS命令仍然非常有用,尤其是在处理批处理脚本、网络管理或者在没有图形界面的情况下。

下面是一些主要的DOS命令和相应的实用案例:

  1. CD (Change Directory): 改变当前目录。

    • 实例:cd \foldername 切换到根目录下的 foldername 文件夹。

    • 实例:进入指定盘符的指定路径

      cd /d D:\LearningNote\DOS
    • 获取当前目录

      C:\Users\Cmy>cd
      C:\Users\Cmy
      C:\Users\Cmy>echo %cd%
      C:\Users\Cmy
  2. DIR (Directory): 显示当前目录的内容。

    • 实例:只显示文件名

      dir /b
  3. MD (Make Directory): 创建新的目录。

    • 实例:创建一个子目录

      md child
    • 实例:创建多个子目录

      md child child1 child2
    • 实例:创建嵌套目录结构

      md parent\child1\child2
    • 实例:创建带有空格的目录

      md "my folder"
  4. RD (Remove Directory): 删除指定的目录。

    • 实例:删除指定的目录

      rd newFolder
    • 实例:删除多个目录

      rd folder folder1 folder2
    • 实例:删除非空目录

      使用 /s 参数表示递归地删除目录及其所有子目录和文件;使用 /q 参数表示静默删除,不显示确认提示

      rd /s newFolder
      rd /s /q parent
  5. DEL (Delete): 删除指定的文件。

    • 实例:del filename.txt 删除名为 filename.txt 的文件。

    • 实例:删除特定类型的文件

      del *.txt
    • 实例:递归删除目录中的所有文件

      del /s parent\*
    • 实例:删除前确认

      del /p file_name
  6. TYPE: 显示指定文件的内容。

    • 实例:type file.txt 显示 file.txt 文件的内容。

    • 实例:将文件重新写入到其他文件

      type file.txt > file2.txt
    • 实例:将文件追加到其他文件

      type file.txt >> file.txt
    • 实例:通过管道符号|传递给其他命令

      type file.txt|findstr base
  7. 管道符:|在DOS(命令提示符)环境下,管道 (|) 符号用于将一个命令的输出传递给另一个命令作为输入。这种技术允许你创建复杂的命令链来处理文本数据

    • find

      #直接用法
      find "search_str" file.txt
      #配合管道符
      type file.txt|find "search_str"
    • findstr

      #直接用法
      findstr search_str file.txt
      type file.txt|findstr search_str
    • 链式用法

      dir | find "data.txt" | find "modified"
  8. COPY: 拷贝文件或目录。

    • 实例:copy file.txt newfile.txtfile.txt 复制为 newfile.txt

    • 合并多个文件

      copy 1.txt+2.txt result.txt
    • 跨盘符复制

      copy 1.txt E:\aaaa.txt
  9. REN (Rename) 或 RENAME: 重命名文件或目录。

    • 实例:ren oldname.txt newname.txtoldname.txt 重命名为 newname.txt
  10. ATTRIB: 修改文件或目录的属性。

    • 实例:attrib +h file.txtfile.txt 添加隐藏属性。
  11. PATH: 设置或显示当前路径环境变量。

    • 实例:path path1;path2 设置当前路径包含 path1path2
  12. ECHO: 打印文本到屏幕或重定向到文件。

    • 实例:echo Hello, World! > output.txt 将 "Hello, World!" 写入 output.txt可以用来创建文件
    • 实例: echo append >> output.txtj将"append"追加(另起一行)到output.txt
  13. SET:设置变量或者环境变量

    1. 设置变量和引用,注意,等号(=)两边不能有空格。

      @echo off
      set h=HelloWorld
      echo %h%
    2. 显示所有变量和显示特定变了

      #显示所有变量
      set
      #显示特定变量
      set JAVA_HOME
    3. set /a允许你执行简单的算术运算并将结果赋值给变量

      set /a sum=1+2
    4. set /p选项可以让用户交互式地输入值

      @echo off
      set /p var="please input your name:"
      echo hello %var% ! Welcome!
  14. exiterrorlevel

    exit命令用于退出当前的命令解释器或者关闭当前的命令窗口。

    # 立即退出命令行或批处理脚本
    exit
    # 退出并设置退出代码 ErrorLevel 如果在批处理脚本中使用,/b选项表示退出当前的批处理脚本,而不是整个命令解释器
    exit [/b] [exitCode]

    errorlevel 是一个系统变量,用于存储上一条命令执行后的退出代码或错误级别。通常,0 表示成功,非零值表示有错误或特定的失败条件。

    REM 设置errorlevel为1
    command1
    exit /b 1 REM 设置errorlevel为0(表示成功)
    command2
    exit /b 0
  15. IF: 条件判断语句,用于编写复杂的批处理脚本。

    实例:

    @echo off
    rem 关闭回显
    if exist file.txt (
    echo File exists.
    ) else (
    echo File not found.
    )
    • 等于(EQU) 和 ==等价 但是优先使用EQU

      if %var% EQU "value"(
      echo the variable is equals to the value;
      )
    • 不等于(NEQ)

      if 1 NEQ 1 (
      echo 1 is not equal to 1
      ) else (
      echo 1 is equal to 1
      )
    • 小于(LSS)

      if 2 LSS 1 (
      echo 2 is less than 1
      ) else (
      echo 1 is less than 2
      )
    • 小于或者等于(LEQ)

      if 1 LEQ 2 (
      echo 1 is less or equal to 2
      ) else (
      echo 2 is less or equal to 1
      )
    • 大于(GTR)

      if 1 GTR 2 (
      echo 1 is greater than 2
      ) else (
      echo 2 is greater than 1
      )
    • 大于或者等于(GEQ)

      if 1 GEQ 2 (
      echo 1 is greater or equal to 2
      ) else (
      echo 2 is greater or equal to 1
      )
    • NOT 取非 注意和!不等价

      @echo
      set var=true
      if NOT %var%==true echo the var is not true
      • NOT 和 !的辨析

        !符号在批处理脚本中有特殊用途,它通常与setlocal enableDelayedExpansion命令一起使用来实现延迟环境变量扩展。当使用!时,你是在引用一个延迟扩展变量,其值在运行时而不是定义时进行评估。例如:

        @echo off
        setlocal EnableDelayedExpansion
        set var=hello
        echo Before loop: !var!
        for /L %%i in (1,1,3) do (
        set var=world
        echo Inside loop: !var!
        )
        echo After loop: !var!

        在这个例子中,!var!用于访问延迟扩展变量var的值。

    • AND (使用 && 符号表示):

      if condition1 && condition2 command
    • OR(使用 || 符号表示):

      if condition1 || condition2 command

    FOR: 循环执行一系列命令。

    格式:FOR [参数] %%变量名 IN (相关文件或命令)   DO 执行的命令
      作用:对一个或一组文件,字符串或命令结果中的每一个对象执行特定命令,达到我们想要的结果。
      注意:在批处理文件中使用 FOR 命令时,指定变量请使用 %%variable,而不要用 %variable。变量名称是区分大小写的,所以 %i 不同于 %I.
      关于:for命令可以带参数或不带参数,带参数时支持以下参数:/d /l /r /f
    • 实例:这个循环会打印当前目录下所有 .txt 文件的内容。

      for %%i in (*.txt) do type %%i
    • 实例: (%var%)中的空格和英文逗号制表符视为分隔符

      @echo off
      set /p var="please input a var:"
      for %%i in (%var%) do (
      echo %%i
      )
    • 参数 /d参数只能显示当前目录下的目录名字,只会搜索指定目录下的目录,不会搜索再下一级的目录

      @echo off
      for /d %%i in (c:\*) do echo %%i --显示c盘根目录下的所有目录
      for /d %%i in (???) do echo %%i --显示当前目录下名字只有1-3个字母的目录
    • 参数/r搜索指定路径及所有子目录中与set相符合的所有文件

      for /r c:\ %%i in (*.exe) do echo %%i --把C盘根目录,和每个目录的子目录下面全部的EXE文件都列出来了
    • 参数/l

      ---
        格式:FOR /L %variable IN (start,step,end) DO command [command-parameters]
        该集表示以增量形式从开始到结束的一个数字序列。可以使用负的 Step
        for /l %%i in (1,1,5) do @echo %%i --输出1 2 3 4 5
        for /l %%i in (1,2,10) do @echo %%i --输出1,3,5,7,9
        for /l %%i in (100,-20,1) do @echo %%i --输出100,80,60,40,20
    • 参数/f 主要用于处理文本文件或者命令的输出

      # delims=xxx 设置分隔符,默认分隔符是空格和制表符。你可以指定一个或多个字符作为分隔符,例如 delims=,; 表示使用逗号和分号作为分隔符。
      @echo off
      for /f "delims==" %%i in (file.txt) do (
      echo %%i
      )
      读取文件并打印每一行 # tokens=x,y,m-n:指定要提取的字段或范围。例如,tokens=1,2 表示提取第一和第二个字段,tokens=2* 表示提取第二个字段及之后的所有字段。
      @echo off
      for /f "tokens=2,3 delims=," %%i in (data.txt) do (
      echo %%i %%j
      )
      读取文件每行的第二三列,以,为分割符 # skip=n:跳过前n行不处理。
      @echo off
      for /f "skip=2 delims=" %%i in (data.txt) do (
      echo %%i
      ) # eol=xxx:指定行尾标记,当遇到这些字符时,认为该行结束。忽略(隐藏、屏蔽)开头字符是xxx的行。
      @echo off
      for /f "eol=C" %%i in (data.txt) do echo %%i # usebackq:允许使用引号 (") 或反引号 (``) 包围文件名或命令。
      @echo off
      FOR /F "usebackq" %%a IN (`dir /b`) DO echo %%a
      @echo off
      FOR /F "tokens=2,* delims=:" %%a IN ('ipconfig ^| findstr /R ",*IPv4,*"') DO echo IP-Address:%%a
      # 注意ipconfig ^|中的^是转义字符 |是管道符
  16. GOTO: 转移到批处理脚本中标签所定义的位置。

    goto命令用于跳转到脚本中的特定标签(label),然后从该标签处继续执行。

    • 实例:
      @echo off
      
      REM 第一部分
      :first_part
      echo This is the first part of the script.
      pause REM 使用goto命令跳转到第二部分
      goto second_part REM 这是永远不会被执行的代码,因为我们将跳转到second_part标签
      echo This code will never be executed. :second_part
      echo This is the second part of the script. set /p flag="input 1 to return fisrt_part"
      if flag equ 1(
      goto first_part
      )
      exit /b 0
  17. PAUSE: 暂停批处理脚本的执行,并显示提示信息。

    • 实例:pause 在执行完批处理脚本后暂停并等待用户按键。
  18. timeout:timeout命令用于暂停脚本的执行并等待指定的时间

    timeout [/t timeout] [/nobreak] [/quiet]
    /t timeout:指定等待的时间(以秒为单位)。例如,/t 10表示等待10秒。
    /nobreak:默认情况下,用户可以通过按下任意键来提前结束等待。使用/nobreak选项可以禁止这种行为,使得脚本必须等待指定的时间。
    timeout /t 10 /nobreak @echo off
    setlocal enabledelayedexpansion # 没1秒打印一次 打印10s
    set count=0
    :start
    echo Hello
    set /a count+=1
    if !count! equ 10 exit
    timeout /t 1 > nul
    goto start

dos-基础用法的更多相关文章

  1. DOS基础使用专题(强烈推荐)

    DOS基础使用专题(强烈推荐) 美丽的DOS时代 DOS是世界上使用人数最多的操作系统,包括上面的Win3.x/9x等GUI操作平台的用户.尽管许多人由于种种原因而使用了其它非DOS的操作系统或操作环 ...

  2. PropertyGrid控件由浅入深(二):基础用法

    目录 PropertyGrid控件由浅入深(一):文章大纲 PropertyGrid控件由浅入深(二):基础用法 控件的外观构成 控件的外观构成如下图所示: PropertyGrid控件包含以下几个要 ...

  3. logstash安装与基础用法

    若是搭建elk,建议先安装好elasticsearch 来自官网,版本为2.3 wget -c https://download.elastic.co/logstash/logstash/packag ...

  4. elasticsearch安装与基础用法

    来自官网,版本为2.3 注意elasticsearch依赖jdk,2.3依赖jdk7 下载rpm包并安装 wget -c https://download.elastic.co/elasticsear ...

  5. BigDecimal最基础用法

    BigDecimal最基础用法 用字符串生成的BigDecimal是不会丢精度的. 简单除法. public class DemoBigDecimal { public static void mai ...

  6. Vue组件基础用法

    前面的话 组件(Component)是Vue.js最强大的功能之一.组件可以扩展HTML元素,封装可重用的代码.根据项目需求,抽象出一些组件,每个组件里包含了展现.功能和样式.每个页面,根据自己所需, ...

  7. Smarty基础用法

    一.Smarty基础用法: 1.基础用法如下 include './smarty/Smarty.class.php';//引入smarty类 $smarty = new Smarty();//实例化s ...

  8. 前端自动化测试神器-Katalon的基础用法

    前言 最近由于在工作中需要通过Web端的功能进行一次大批量的操作,数据量大概在5000左右,如果手动处理, 完成一条数据的操作用时在20秒左右的话,大概需要4-5个人/天的工作量(假设一天8小时的工作 ...

  9. Bootstrap fileinput:文件上传插件的基础用法

    官网地址:http://plugins.krajee.com/ 官网提供的样例:http://plugins.krajee.com/file-input/demo 基础用法一 导入核心CSS及JS文件 ...

  10. asyncio 基础用法

    asyncio 基础用法 python也是在python 3.4中引入了协程的概念.也通过这次整理更加深刻理解这个模块的使用 asyncio 是干什么的? asyncio是Python 3.4版本引入 ...

随机推荐

  1. ElasticSearch安装、插件介绍及Kibana的安装与使用详解

    ElasticSearch安装.插件介绍及Kibana的安装与使用详解 1.安装 ElasticSearch 1.1 安装 JDK 环境 因为 ElasticSearch 是用 Java 语言编写的, ...

  2. [转发]MySQL安装配置教程(超级详细、保姆级)

    MySQL安装配置教程(超级详细.保姆级)_SoloVersion的博客-CSDN博客_mysql安装配置教程一. 下载MySQLMysql官网下载地址https://downloads.mysql. ...

  3. Python 字符串与字节数组转换

    整数之间的进制转换: 10进制转16进制: hex(16) ==> 0x10 16进制转10进制: int('0x10', 16) ==> 16 类似的还有oct(), bin() 字符串 ...

  4. DataSet类型转换实体

    查询DataSet类型无法对每条数据进行循环转换,利用泛型对象使用反射机制将对象相关属性进行自动赋值. 基础调用 DataSet ds = DbHelper.Query(SQL); if (ds.Ta ...

  5. centos环境下MySQL8.0.25离线升级至8.0.32

    环境 centos7 mysql8.0.25 下载新版本mysql 下载地址:https://dev.mysql.com/downloads/mysql/ 升级 备份数据 先保存原始数据,进入mysq ...

  6. P4093 [HEOI2016/TJOI2016] 序列 题解

    题目链接:序列 对于 LIS 问题,很显而易见的有 dp方程为: \[dp_i=\max{dp_j}+1 \ (j<i,a_j \le a_i) \text{ dp表示以某个位置结尾的最长 LI ...

  7. uni-app+vue3会遇到哪些问题

    已经用 uni-app+vue3+ts 开发了一段时间,记录一下日常遇见的问题和解决办法 uni-app 中的单端代码 uni-app 是支持多端,如果你想让你的代码,只在部分平台使用,那么就需要用的 ...

  8. MySQL最左匹配原则

    最左匹配原则都是针对联合索引来说的,那么为什么要使用联合索引呢? 一.为什么要使用联合索引? 1.减少开销. 建一个联合索引(col1,col2,col3),实际相当于建了(col1),(col1,c ...

  9. NC17247 H、Diff-prime Pairs

    题目链接 题目 题目描述 Eddy has solved lots of problem involving calculating the number of coprime pairs withi ...

  10. 开源神器:自动生成随机 mock 数据测试对象

    测试的痛点 大家好,我是老马. 每一位开发者大部分工作都是写代码.测试代码.修BUG. 我们有很多测试代码,总是花费大量的实践去构建一个对象. 于是就在想,能不能自动填充一个对象呢? 于是去 gith ...