清理垃圾把语音聊天删掉可以恢复吗 清理垃圾bat( 四 )


在上面的例子中 , %1 和 PATH 可以被其他有效数值替换 。%~ 语法被一个有效参数号码终止 。%~ 修定符不能跟 %*使用注意:参数扩充时不理会参数所代表的文件是否真实存在 , 均以当前目录进行扩展要理解上面的知识 , 下面的例子很关键 。
例:@echo offEcho 产生一个临时文件 > tmp.txtRem 下行先保存当前目录 , 再将c:\\windows设为当前目录pushd c:\\windowsCall :sub tmp.txtRem 下行恢复前次的当前目录PopdCall :sub tmp.txtpauseDel tmp.txtexit:subEcho 删除引号: %~1Echo 扩充到路径: %~f1Echo 扩充到一个驱动器号: %~d1Echo 扩充到一个路径: %~p1 Echo 扩充到一个文件名: %~n1Echo 扩充到一个文件扩展名: %~x1Echo 扩充的路径指含有短名: %~s1 Echo 扩充到文件属性: %~a1 Echo 扩充到文件的日期/时间: %~t1 Echo 扩充到文件的大小: %~z1 Echo 扩展到驱动器号和路径:%~dp1Echo 扩展到文件名和扩展名:%~nx1Echo 扩展到类似 DIR 的输出行:%~ftza1Echo.Goto :eof例:set aa=123456set cmdstr=echo %aa%call %cmdstr%pause本例中如果不用call , 而直接运行%cmdstr% , 将显示结果%aa% , 而不是123456
14、shift更改批处理文件中可替换参数的位置 。
SHIFT [/n]如果命令扩展名被启用 , SHIFT 命令支持/n 命令行开关;该命令行开关告诉命令从第 n 个参数开始移位;n 介于零和八之间 。例如: SHIFT /2会将 %3 移位到 %2 , 将 %4 移位到 %3 , 等等;并且不影响 %0 和 %1 。
15、IF
IF 条件判断语句 , 语法格式如下:IF [NOT] ERRORLEVEL number commandIF [NOT] string1==string2 commandIF [NOT] EXIST filename command下面逐一介绍 , 更详细的分析请看后面章节 。
(1) IF [NOT] ERRORLEVEL number commandIF ERRORLEVEL这个句子必须放在某一个命令的后面 , 执行命令后由IF ERRORLEVEL 来判断命令的返回值 。Number的数字取值范围0~255 , 判断时值的排列顺序应该由大到小 。返回的值大于等于指定的值时 , 条件成立例:@echo offdir c:rem退出代码为>=1就跳至标题1处执行 , >=0就跳至标题0处执行IF ERRORLEVEL 1 goto 1IF ERRORLEVEL 0 goto 0Rem 上面的两行不可交换位置 , 否则失败了也显示成功 。:0echo 命令执行成功!Rem 程序执行完毕跳至标题exit处退出goto exit:1echo 命令执行失败!Rem 程序执行完毕跳至标题exit处退出goto exit:exitpause运行显示:命令执行成功!
(2) IF [NOT] string1==string2 commandstring1和string2都为字符的数据 , 英文内字符的大小写将看作不同 , 这个条件中的等于号必须是两个(绝对相等的意思)条件相等后即执行后面的command检测当前变量的值做出判断 , 为了防止字符串中含有空格 , 可用以下格式if [NOT] {string1}=={string2} commandif [NOT] [string1]==[string2] commandif [NOT] \”string1\”==\”string2\” command这种写法实际上将括号或引号当成字符串的一部分了 , 只要等号左右两边一致就行了 , 比如下面的写法就不行:if {string1}==[string2] command
(3) IF [NOT] EXIST filename commandEXIST filename为文件或目录存在的意思echo offIF EXIST autoexec.bat echo 文件存在!IF not EXIST autoexec.bat echo 文件不存在!这个批处理大家可以放在C盘和D盘分别执行 , 看看效果
16、setlocal 与 变量延迟本条内容引用[英雄出品]的批处理教程:要想进阶 , 变量延迟是必过的一关!所以这一部分希望你能认真看 。
为了更好的说明问题 , 我们先引入一个例子 。例1:@echo offset a=4set a=5 & echo %a%pause结果:4解说:为什么是4而不是5呢?在echo之前明明已经把变量a的值改成5了?让我们先了解一下批处理运行命令的机制:批处理读取命令时是按行读取的(另外例如for命令等 , 其后用一对圆括号闭合的所有语句也当作一行) , 在处理之前要完成必要的预处理工作 , 这其中就包括对该 行命令中的变量赋值 。

推荐阅读