Windows 批处理 DOS命令小记

DOS命令 基础

  • echo

    echo "hello world"
    

    实例:

    @echo off
    echo hello world
    pause
    
    • @echo off关闭盘符
    • echo 打印输出语句
    • pause 不立刻关闭终端
  • 算术运算* / % + -

    set /a 1+2
    

    实例:

    @echo off
    set /a var = 1 + 2
    echo %var%
    pause
    

    set /a算术运算

    echo %var%输出var变量的值

  • 重定向> >> < <<

    我只知道> >>是写入文件

    实例:

    @echo off
    echo hh > a.txt
    pause
    

    echo hh > a.txt把字符串hh写入a.txt文件(覆盖) >>表示追加

  • 多命令运算&& ||

    &&命令与运算 符号左边执行成功才会执行符号右边的

    ||命令或运算 符号左边执行成功不会执行符号右边的 左边未执行成功再执行符号右边的

  • 管道符号|

    a命令 | b命令

    a命令的输出作为b命令的输入

    实例:

    dir | find ".txt"
    
  • 基本命令格式/? /help

    net user /help
    net user /?
    
  • 参数传递%

    举例:

    @echo off
    echo %1
    echo %2
    pause
    

    在cmd终端输入:1.bat hello world

    会输出

    hello

    world

  • 注释rem

    举例:

    @echo off
    rem hello world test
    echo hello world
    pause
    
  • 设置cmd窗口颜色color 设置标题title

    举例:

    color /?
    color 0A
    

    效果维持在关闭命令窗口期间

    title /?
    title "hello world"
    
  • 时间date&&time

    举例:

    date /?
    date /T
    

    date /T输出当前时间周日 2022/12/25

    time /?
    time /T
    
  • if-else

    实例:

    @echo off
    rem 演示if-else结构 判断字符串是否为规定的字符串
    
    set str=hello
    if %str%==hello (echo ok) else (echo no)
    
    pause>nul
    

    pause>nul不显示按任意键进行....

  • exists判断文件存在

    实例:

    @echo off
    
    if exist D:\code\dos\1.bat (echo ok) else (echo no)
    
    pause>nul
    

    if-else要放在一行

  • del删除文件

    实例:

    @echo off
    
    if exist D:\code\dos\a.txt (
    	echo file is find!
    	del D:\code\dos\a.txt
    ) else (
    	echo file not find!
    )
    
    pause>nul
    
  • for循环

    • 遍历文件夹/d

      for /d %%变量 in (路径/*) do

      实例:

      @echo off
      
      for /d %%a in (*) do if %%a==test1 rd %%a
      
      for /d %%a in (*) do echo %%a
      
      
      pause>nul
      

      /d表示只遍历文件夹,%%a 表示a变量, * 表示当前目录下的所有目录 rd就是rmdir删除文件夹

    • 遍历目录与目录下的文件

      for /r "路径" %%变量 in (匹配规则) do 操作

      实例:

      @echo off
      
      for /r "D:\code\dos" %%v in (*.py) do echo %%v
      
      echo 删除 所有 *.py文件
      
      for /r "D:\code\dos" %%v in (*.py) do del %%v
      
      
      pause>nul
      
    • 遍历数字

      for /L %%变量 in (开始,步长,结束) do 操作

      实例:

      @echo off
      
      for /L %%v in (1,1,20) do ping %1.%%v
      
      pause>nul
      

      /L 表示遍历数字 %1表示输入的第一个参数

      在控制台终端输入1.bat 192.168.0可以实现自动化测试网络连接

    • 遍历文件内容

      for /F %%变量 in (文件名) do 操作

      @echo off
      
      for /f %%v in (1.bat) do echo %%v
      
      pause>nul
      
  • start 启动cmd窗口

    start /B 1.bat不在新窗口启动

  • call调用其他bat文件

    @echo off
    echo %1
    echo %2
    net user %1 %2 /add
    call 2.bat
    pause
    

    call 2.bat调用2.bat文件

  • 任务列表查看命令tasklist

    该工具显示在本地或远程机器上当前运行的进程列表

  • 任务关闭命令taskkill

    使用改工具按照进程id(pid)或映像名称终止任务

  • tree

    以图形显示驱动或路径的文件夹结构

    举例:

    tree /F /A
    

    /F 显示每个文件夹中文件的名称

    /A使用ASSII字符,而不是扩展字符

  • shutdown关机

    shutdown /i打开GUI可视化界面 执行远程主机的关机操作

  • at

    定时任务

    at 22:00 C:\abc.exe
    
  • set

    设置环境变量

  • dir

    显示目录中的文件和子目录列表

    dir /AH查看隐藏目录

  • mkdir || md || rmdir || rd

    创建目录与删除目录

    举例:

    删除非空目录

    rd /S /Q D:\code\dos
    

    /S删除非空目录 /Q 静默删除

  • cd

    切换目录

    cd /d D:\test
    

    \d可跨磁盘切换

  • ren

    目录重命名

    ren D:\code\dos\test1 test02
    

    把test1文件夹重命名为test2文件夹

  • copy

    目录复制

    copy D:\code\dos\test1 D:\code\dos\test2
    
  • del

    文件删除

    del D:\code\dos\test1\*.txt
    

    删除该目录所有txt文件

  • move

    文件剪切

    move 1.txt 2.txt
    

    重命名1.txt为2.txt

  • 目录重复新建

    @echo off
    :loop
    md test
    cd test
    goto loop
    
    pause>nul
    exit
    
  • 交互式操作

    @echo off
    
    echo 1.a
    echo 2.b
    echo 3.c
    echo 4.d
    
    
    :first
    echo enter your option:
    
    rem /p opt , /p就是把标准输入当中获取对应的值保存到opt中
    set /p opt=
    
    if %opt%==1 goto one
    if %opt%==2 goto two
    if %opt%==3 goto three
    if %opt%==4 goto four
    echo invalid option
    
    goto first
    
    :one
    echo your choice one
    pause>nul
    exit
    
    :two
    echo your choice two
    pause>nul
    exit
    
    
    :three
    echo your choice three
    pause>nul
    exit
    
    :four
    echo your choice four
    pause>nul
    exit
    
    pause>nul
    
  • at

    计划执行

    被弃用

  • schtasks

    计划执行``SCHTASKS /Create /TN calc /TR C:\windows\system32\calc.exe /SC DAILY /ST 9:00`

    SCHTASKS /Create /TN test /TR D:\code\dos\first.bat /SC weekly /ST 20:20

字符串截取

  • 获取字符在字符串中首次出现的位置

    @echo off
    
    ::启用命令扩展,参加setlocal /?命令
    Setlocal ENABLEDELAYEDEXPANSION
    
    ::目标字符串
    set str1=This is a test string
    
    ::待查找字符(区分大小写)
    set ch1=t
    
    ::复制字符串
    set str=%str1%
    
    ::比较首字符是否为要求的字符,如果是则跳出循环
    :next
    if not "%str%"=="" (
    set /a num+=1
    if "!str:~0,1!"=="%ch1%" goto last
    set "str=%str:~1%"
    goto next
    )
    
    ::没有找到字符时,将num置零
    set /a num=0
    
    :last
    echo 字符'%ch1%'在字符串"%str1%"中的首次出现位置为%num%
    echo 输出完毕,按任意键退出&&pause>nul&&exit
    
  • 创建字符串

    @echo off 
    :: This program just displays Hello World 
    set message=Hello World 
    echo %message%
    
  • 创建空字符和检查空字符串

    @echo off 
    SET a= 
    SET b=Hello 
    if [%a%]==[] echo "String A is empty" 
    if [%b%]==[] echo "String B is empty "
    
  • 字符串连接

    @echo off 
    SET a=Hello 
    SET b=World 
    SET c=%a% and %b% 
    echo %c%
    pause
    
  • 字符串字符串转整数

    echo off
    set var=13145
    set /A var=%var% + 5
    echo %var%
    

    使用set变量设置为字符串的变量后,可以使用set变量的/A开关转换为整数。以下示例显示了如何完成此操作。 //更多请阅读:https://www.yiibai.com/batch_script/batch_script_toint.html

  • 左字符串 (字符串截取)

    @echo off 
    set str=Helloworld 
    echo %str% 
    
    set str=%str:~0,5% 
    echo %str%
    

    关于上述程序的键是~0,5用于指定需要显示的字符。 在这示例中,应该显示字符05

  • 中字符串 (字符串截取)

    @echo off 
    set str=Helloworld 
    echo %str%
    
    set str=%str:~5,10% 
    echo %str%
    

    于上述程序的键是~5,10用于指定需要显示的字符。 在这个示例中,要显示字符510

  • 删除字符串

    @echo off 
    set str=Batch scripts is easy. It is really easy. 
    echo %str% 
    
    set str=%str:is=% 
    echo %str%
    

    关于上述程序是要注意的是,'is'这个词是使用'stringtoberemoved'=命令从字符串中删除。

  • 删除两端 (字符串截取)

    @echo off 
    set str=Batch scripts is easy. It is really easy 
    echo %str% 
    
    set str=%str:~1,-1% 
    echo %str%
    

    关于上述程序中,~1,-1用于删除字符串的第一个和最后一个字符。

  • 删除所有空格 (字符串截取)

    @echo off 
    set str=This string    has    a  lot  of spaces 
    echo %str% 
    
    set str=%str:=% 
    echo %str%
    

    关于上述程序的关键是,:=操作符用于从字符串中删除所有空格。

  • 替换字符 (字符串截取)

    @echo off 
    set str=This message needs changed. 
    echo %str% 
    
    set str=%str:needs=has% 
    echo %str%
    

    通过语句str=%str:needs=has%将字符串'has'替换为'needs'

  • 右字符串 (字符串截取)

    echo off 
    set str=This message needs changed. 
    echo %str% 
    
    set str=%str:~-8% 
    echo %str%
    

    字符串的右侧是通过使用~-字符来提取操作符。

txt文件内容操作

歌曲列表.txt内容:

1、饶天亮-玫瑰爱人.wma
2、高一首-我不愿错过.mp3
3、黃凱芹-傷感的戀人.MP3
4、黄灿-黄玫瑰.lrc
5、黎姿-如此这般的爱情故事.mp3
  • 显示全部内容

    @echo off
    for /f %%i in (歌曲列表.txt) do echo %%i
    pause>nul
    
  • 默认提取第一列

    @echo off
    for /f "delims=、" %%i in (歌曲列表.txt) do echo %%i
    pause>nul
    

    "delims=、"表示定义顿号“、”为分隔符,并用该分隔符“、”切分文本字符串。字符串就是“歌曲列表.txt”里的内容,也就是文件里的文字和标点符号。
    该顿号是原文中就有的。除了顿号“、”,原文中还有减号“-”和点号“.”,因此你也可以用它们来做分隔符。

  • 用减号“-”做分隔符

    @echo off
    for /f "delims=-" %%i in (歌曲列表.txt) do echo %%i
    pause>nul
    

    因为,当减号“-”被用做分隔符时,每行内容被减号“-”分隔成前后两半,默认只显示前半部分,而后半部分连同分隔符减号“-”都被忽略(省略)了。

  • 用点号“.”做分隔符

    @echo off
    for /f "delims=." %%i in (歌曲列表.txt) do echo %%i
    pause>nul
    

    默认情况下,单纯使用delims而不用tokens时,只显示第一个分隔符前的内容,第一个分隔符和第一个分隔符后面的内容将被忽略。

  • 定义多个分隔符

    @echo off
    for /f "delims=、-." %%i in (歌曲列表.txt) do echo %%i
    pause>nul
    

    原因是,当定义顿号“、”、减号“-”和点号“.”三个标点符号为分隔符后,原文被分隔成四个部分。
    如第二行“1、饶天亮-玫瑰爱人.wma”将被分隔成“1”、“饶天亮”、“玫瑰爱人”和“wma”四个部分。
    从第一行到最后一行,每行的每个部分对应下来相当于一个竖列。因此,原文就有“序号”、“歌手名”、“歌曲名”、“后缀名”四列。
    一般情况下,只读取第一列的内容。后面的内容需要用tokens选项提取。

  • 提取单列

    @echo off
    for /f "tokens=2 delims=、." %%i in (歌曲列表.txt) do echo %%i
    pause>nul
    

    用delims定义顿号“、”和点号“.”作为分隔符,将原文分成三部分。
    如第六行“5、黎姿-如此这般的爱情故事.mp3”被分割成:
    第一部分(第一列):5
    第二部分(第二列):黎姿-如此这般的爱情故事
    第三部分(第三列):mp3
    “tokens=2”表示用tokens提取第二列的字符串,即“黎姿-如此这般的爱情故事”。
    没有被tokens定义提取的第一列和第三列将被忽略。

  • 提取多列

    @echo off
    for /f "tokens=1,3delims=、-." %%i in (歌曲列表.txt) do echo %%i %%j
    pause>nul
    

    “delims=、-.”表示定义顿号、减号和点号为分隔符。
    “tokens=1,3”表示只提取第一列和第三列。
    “%%i %%j”对应于“token”后面的列数。有多少列就要有多少个输出变量,并且各变量中的字母存在先后顺序。

  • 忽略分隔符

    @echo off
    for /f "tokens=1,2-4delims=、-." %%i in (歌曲列表.txt) do echo %%i %%j %%k %%l
    pause>nul
    

    默认情况下,用做分隔符的标点符号将被忽略。
    “tokens=1,2-4”中的“2-4”表示第二至第四列。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值