1. 简述
    1. dos批处理脚本
    2. 后缀为 .bat 或者 .cmd
    3. 学习该命令目的: 删除电脑垃圾数据
    4. 遍历出磁盘内所有包含.bak .tmp .temp 文件的后缀, 并且删除
    5. 难点: 循环找出文件夹下的垃圾文件, 以及验证文件是否符合标准
  2. 常用
    1. 注释
      1. :定义标签的同时, 起到注释作用
        1. : 注释
        2. :: 注释
        3. :? 注释
        4. :& 注释
        5. :label 注释
        6. rem 注释
      2. %%不是指令, 不做回显, 用它作为单行注释
        1. %注释%
      3. 多行注释
        1. goto 语法 将处理器定位到要执行的行
          1. goto label 注释部分 :label label行, 跳过了注释部分
          2. goto demo 注释部分 :demo demo行, 跳过了注释部分
        2. if语法
          1. if 1==2(注释部分) 条件永远为假, 所以该注释部分不运行
    2. 常用
      1. %转义符
      2. 赋值
        1. set demo=1 变量赋值
      3. 输入
        1. demo.bat 变量1 变量2
        2. set /p demo = please import content: 变量赋值
        3. set /a 表达式赋值
          1. set /a demo1=1, demo2=2 >> 1,2
          2. set /a demo1=1+2>> 3
            1. +
            2. -
            3. *
            4. /
            5. &
            6. ^
            7. |
            8. >>
            9. << 等…
      4. 打印
        1. echo 打印内容 打印文本
        2. echo %demo% 打印变量
        3. echo %0% 打印执行程序输入的第一个值 类似执行命令: demo.bat demo1 >> demo.bat
        4. echo%1% 打印执行程序输入的第二个值 类似执行命令: demo.bat demo1 >> demo
    3. 常用命令
      1. echo
      2. @ 理解: 将命令放到一行执行, 且自动执行
        1. @pause 接上个脚本
        2. @echo off ... @echo on 单个脚本的开始结束
      3. goto将脚本定位到带标签的行
      4. rem 注释符
      5. pause 按任意键继续
        1. @pause 自动按任意键
        2. pause 需要手动按任意键
      6. call调用其他程序(倾向内部调用)
        1. call demo.bat运行程序
        2. call demo1运行标签
      7. start 运行程序并展示窗口
        1. start file.txt运行指定程序
      8. if条件语句
        1. if 条件 (程序1) else (程序2)
          1. exist 是否存在文件 if exist folder1 (条件) else
          2. defined 判断变量是否存在
          3. errorlevel 判断上个命令的返回值
        2. if a 条件表达式 b (程序)
          1. ==
          2. >
          3. <
          4. equ 相等
      9. for循环语句
        1. for
          1. for %%i in (a b c) do @echo %%i 循环输出a, b, c
          2. for %%i in (*.txt) do @echo %%i 循环当前盘符下.txt结尾的所有文件
          3. for %%i in (??.txt) do @echo %%i 循环当前盘符下两位字符且开头为.txt结尾的所有文件
          4. for %%i in (*.*) do @echo %%i 循环当前盘符下所有文件
          5. for %%i in (*.bak ,*.tmp,*.temp ) do echo %%i 找出当前盘符下所有垃圾文件
        2. for /r 遍历文件夹
          1. for /r [[drive:]path] %%variable in (set) do command [command-parameters]
            1. [[drive:]path] 文件目录
          2. for /r w: %%i in (*) do echo %%i匹配当前文件下的所有文件
        3. for /d匹配文件夹
          5.1. for /d %%i in (*) do echo %%i 匹配当前目录下的文件夹
        4. for /l
          1. for /l %variable in (start,step,end) do command [command-parameters]
            1. start起始值
            2. step步间距
            3. end终止值
          2. for /l %%i in (1 2 5) do echo %%i >> 1,3,5
        5. for /f 解析文本内容
          1. delims分割
            1. for /f "delims=," %%i in (test.txt) do echo %%i 分割逗号
            2. for /f "delims=.," %%i in (test.txt) do echo %%i 分割多个
          2. tokens取多个
            1. for /f "delims=, tokens=3" %%i in (test3.txt) do echo %%i 取第三个
            2. for /f "delims=, tokens=3,4" %%i in (test3.txt) do echo %%i %%j 取第三, 四个
            3. for /f "delims=, tokens=3-4" %%i in (test3.txt) do echo %%i %%j 取第三-四个
          3. skip行数跳过
            1. for /f "skip=2" %%i in (test.txt) do echo %%i 跳过前两行
          4. eol忽略指定字符开头
            1. for /f "eol=; " %i in (myfile.txt) do @echo %i %j
          5. 其他
            1. for /f "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k
            2. for %%i in (*) do (echo %%i)
      10. exit 退出
      11. del [filName] 命令
        1. DEL [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names
          1. names 文件或者目录
          2. /p 删除每个文件前提示
          3. /f 强制删除只读文件
          4. /s 删除所有子目录中的指定文件, 并展示已经删除的文件
          5. /q 删除全局通配符, 不要求确认
          6. /a 根据属性选择要删除文件
            1. R 只读
            2. S 系统文件
            3. H 隐藏文件
            4. A 准备存档文件
            5. I 无内容索引文件
            6. L 重新分析点
            7. O 脱机文件
              • 表示否的前置
      12. DEL [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names
  3. 循环
  4. 条件语句
  5. 封装
    存在问题: 无法删除包含空格的文件及文件路径
chcp 65001
setlocal enabledelayedexpansion
@echo off 

:: 清理系统垃圾
:: 清理所有bak,tmp,temp,log结尾的垃圾文件

echo Clearing system files
for %%a in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do (
	set disk=%%a:
	echo clear disk !disk!
	!disk!
	cd ../../
	for /r %%i in (*.bak,*.tmp,*.temp,*.log) do (
		del /s /q /f /s "%%i"
	)
)

echo Garbage removal completed
@echo. & pause
@echo on



Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐