快速学会bat脚本--- 清理磁盘垃圾
·
- 简述
- dos批处理脚本
- 后缀为 .bat 或者 .cmd
- 学习该命令目的: 删除电脑垃圾数据
- 遍历出磁盘内所有包含.bak .tmp .temp 文件的后缀, 并且删除
- 难点: 循环找出文件夹下的垃圾文件, 以及验证文件是否符合标准
- 常用
- 注释
:定义标签的同时, 起到注释作用: 注释:: 注释:? 注释:& 注释:label 注释rem 注释
%%不是指令, 不做回显, 用它作为单行注释%注释%
- 多行注释
goto语法 将处理器定位到要执行的行goto label 注释部分 :labellabel行, 跳过了注释部分goto demo 注释部分 :demodemo行, 跳过了注释部分
if语法if 1==2(注释部分)条件永远为假, 所以该注释部分不运行
- 常用
%转义符- 赋值
set demo=1变量赋值
- 输入
demo.bat 变量1 变量2set /p demo = please import content:变量赋值set /a表达式赋值set /a demo1=1, demo2=2>> 1,2set /a demo1=1+2>> 3+-*/&^|>><<等…
- 打印
echo 打印内容打印文本echo %demo%打印变量echo %0%打印执行程序输入的第一个值 类似执行命令: demo.bat demo1 >> demo.batecho%1%打印执行程序输入的第二个值 类似执行命令: demo.bat demo1 >> demo
- 常用命令
echo@理解: 将命令放到一行执行, 且自动执行@pause接上个脚本@echo off ... @echo on单个脚本的开始结束
goto将脚本定位到带标签的行rem注释符pause按任意键继续@pause自动按任意键pause需要手动按任意键
call调用其他程序(倾向内部调用)call demo.bat运行程序call demo1运行标签
start运行程序并展示窗口start file.txt运行指定程序
if条件语句if 条件 (程序1) else (程序2)exist是否存在文件if exist folder1 (条件) elsedefined判断变量是否存在errorlevel判断上个命令的返回值
if a 条件表达式 b (程序)==><equ相等
for循环语句forfor %%i in (a b c) do @echo %%i循环输出a, b, cfor %%i in (*.txt) do @echo %%i循环当前盘符下.txt结尾的所有文件for %%i in (??.txt) do @echo %%i循环当前盘符下两位字符且开头为.txt结尾的所有文件for %%i in (*.*) do @echo %%i循环当前盘符下所有文件for %%i in (*.bak ,*.tmp,*.temp ) do echo %%i找出当前盘符下所有垃圾文件
for /r遍历文件夹for /r [[drive:]path] %%variable in (set) do command [command-parameters][[drive:]path]文件目录
for /r w: %%i in (*) do echo %%i匹配当前文件下的所有文件
for /d匹配文件夹
5.1.for /d %%i in (*) do echo %%i匹配当前目录下的文件夹for /lfor /l %variable in (start,step,end) do command [command-parameters]- start起始值
- step步间距
- end终止值
for /l %%i in (1 2 5) do echo %%i>> 1,3,5
for /f解析文本内容delims分割for /f "delims=," %%i in (test.txt) do echo %%i分割逗号for /f "delims=.," %%i in (test.txt) do echo %%i分割多个
tokens取多个for /f "delims=, tokens=3" %%i in (test3.txt) do echo %%i取第三个for /f "delims=, tokens=3,4" %%i in (test3.txt) do echo %%i %%j取第三, 四个for /f "delims=, tokens=3-4" %%i in (test3.txt) do echo %%i %%j取第三-四个
skip行数跳过for /f "skip=2" %%i in (test.txt) do echo %%i跳过前两行
eol忽略指定字符开头for /f "eol=; " %i in (myfile.txt) do @echo %i %j
- 其他
for /f "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %kfor %%i in (*) do (echo %%i)
exit退出del [filName]命令- DEL [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names
names文件或者目录/p删除每个文件前提示/f强制删除只读文件/s删除所有子目录中的指定文件, 并展示已经删除的文件/q删除全局通配符, 不要求确认/a根据属性选择要删除文件- R 只读
- S 系统文件
- H 隐藏文件
- A 准备存档文件
- I 无内容索引文件
- L 重新分析点
- O 脱机文件
-
- 表示否的前置
- DEL [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names
- DEL [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names
- 注释
- 循环
- 条件语句
- 封装
存在问题: 无法删除包含空格的文件及文件路径
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
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)