ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:25.39KB ,
资源ID:8784571      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8784571.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第七课 DOS批处理编程高级技巧.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第七课 DOS批处理编程高级技巧.docx

1、第七课 DOS批处理编程高级技巧第七章 DOS批处理编程高级技巧 DOS批处理高级教程:第一章 批处理基础 DOS批处理高级教程:第二章 DOS循环for命令详解 DOS批处理高级教程:第三章 for命令中的变量 DOS批处理高级教程:第四章 批处理中的变量 DOS批处理高级教程:第五章 set命令详解 DOS批处理高级教程:第六章 if命令讲解 DOS批处理高级教程:第七章 DOS批处理编程高级技巧一、交互界面设计没啥说的,看看高手设计的菜单界面吧:1. echo off2. cls3. title 终极多功能修复4. :menu5. cls6. color 0A7. echo.8. ech

2、o =9. echo 请选择要进行的操作,然后按回车10. echo =11. echo.12. echo 1.网络修复及上网相关设置,修复IE,自定义屏蔽网站13. echo.14. echo 2.病毒专杀工具,端口关闭工具,关闭自动播放15. echo.16. echo 3.清除所有多余的自启动项目,修复系统错误17. echo.18. echo 4.清理系统垃圾,提高启动速度19. echo.20. echo Q.退出21. echo.22. echo.23. :cho24. set choice=25. set /p choice= 请选择:26. IF NOT %choice%= S

3、ET choice=%choice:0,1%27. if /i %choice%=1 goto ip28. if /i %choice%=2 goto setsave29. if /i %choice%=3 goto kaiji30. if /i %choice%=4 goto clean31. if /i %choice%=Q goto endd32. echo 选择无效,请重新输入33. echo.34. goto cho复制代码只要学完本教程前面的章节,上面的程序应该能看懂了。二、ifelse条件语句前面已经谈到,DOS条件语句主要有以下形式IF NOT ERRORLEVEL numbe

4、r commandIF NOT string1=string2 commandIF NOT EXIST filename command增强用法:IF /I string1 compare-op string2 command增强用法中加上/I就不区分大小写了!增强用法中还有一些用来判断数字的符号:EQU - 等于NEQ - 不等于LSS - 小于LEQ - 小于或等于GTR - 大于GEQ - 大于或等于上面的command命令都可以用小括号来使用多条命令的组合,包括else子句,组合命令中可以嵌套使用条件或循环命令。例如: IF EXIST filename ( del filename

5、) ELSE ( echo filename missing )也可写成:if exist filename (del filename) else (echo filename missing)但这种写法不适合命令太多或嵌套命令的使用。三、循环语句1、指定次数循环FOR /L %variable IN (start,step,end) DO command command-parameters组合命令:FOR /L %variable IN (start,step,end) DO (Command1Command2)2、对某集合执行循环语句。FOR %variable IN (set) DO

6、 command command-parameters%variable指定一个单一字母可替换的参数。(set) 指定一个或一组文件。可以使用通配符。command 对每个文件执行的命令,可用小括号使用多条命令组合。FOR /R drive:path %variable IN (set) DO command command-parameters 检查以 drive:path 为根的目录树,指向每个目录中的 FOR 语句。如果在 /R 后没有指定目录,则使用当前目录。如果集仅为一个单点(.)字符,则枚举该目录树。同前面一样,command可以用括号来组合:FOR /R drive:path %

7、variable IN (set) DO (Command1Command2commandn)3、条件循环 上面的循环结构是用for命令来实现的,for命令循环有一个缺点,就是整个循环被当作一条命令语句,涉及到变量延迟的问题。 利用goto语句和条件判断,dos可以实现条件循环,很简单啦,看例子:例:1. echo off2. set var=03. rem *循环开始了4. :continue5. set /a var+=16. echo 第%var%次循环7. if %var% lss 100 goto continue8. rem *循环结束了9. echo 循环执行完毕10. paus

8、e复制代码例:1. echo off2. set var=1003. rem *循环开始了4. :continue5. echo 第%var%次循环6. set /a var-=17. if %var% gtr 0 goto continue8. rem *循环结束了9. echo 循环执行完毕10. pause复制代码四、子程序在批处理程序中可以调用外部可运行程序,比如exe程序,也可调用其他批处理程序,这些也可以看作子程序,但是不够方便,如果被调用的程序很多,就显得不够简明了,很繁琐。在windowsXP中,批处理可以调用本程序中的一个程序段,相当于子程序,这些子程序一般放在主程序后面。子

9、程序调用格式:CALL :label arguments子程序语法::mandngoto :eof在子程序段中,参数%0指标签:label子过程一般放在最后,并且注意在主程序最后要加上exit或跳转语句,避免错误的进入子过程。子程序和主程序中的变量都是全局变量,其作用范围都是整个批处理程序。传至子程序的参数在call语句中指定,在子程序中用%1、%2至%9的形式调用,而子程序返回主程序的数据只需在调用结束后直接引用就可以了,当然也可以指定返回变量,请看下面的例子。子程序例1:1. echo off2. call :sub return 你好3. echo 子程序返回值:%return%4. p

10、ause5. 6. :sub7. set %1=%28. goto :eof复制代码运行结果:你好子程序例2:设计一个求多个整数相加的子程序1. echo off2. set sum=03. call :sub sum 10 20 354. echo 数据求和结果:%sum%5. pause6. 7. :sub8. rem 参数1为返回变量名称9. set /a %1=%1+%210. shift /211. if not %2= goto sub12. goto :eof复制代码运行结果:65在win98系统中,不支持上面这种标号调用,须将子程序单独保存为一个批处理程序,然后调用。五、用ft

11、p命令实现自动下载ftp是常用的下载工具,ftp界面中有40多个常用命令,自己学习了,不介绍了。这里介绍如何用dos命令行调用ftp命令,实现ftp自动登录,并上传下载,并自动退出ftp程序。其实可以将ftp命令组合保存为一个文本文件,然后用以下命令调用即可。ftp-n -s:drive:pathfilename上面的filename为ftp命令文件,包括登录IP地址,用户名、密码、操作命令等例:open 90.52.8.3 打开ipuser iware 用户为iwarepassword8848 密码bin 二进制传输模式promptcd tmp1 切换至iware用户下的tmp1目录pwdl

12、cd d:download 本地目录mget * 下载tmp1目录下的所有文件bye 退出ftp六、用7-ZIP实现命令行压缩和解压功能语法格式:(详细情况见7-zip帮助文件,看得头晕可以跳过,用到再学)7z . .7z.exe的每个命令都有不同的参数,请看帮助文件为压缩包名称为文件名称,支持通配符或文件列表其中,7z是至命令行压缩解压程序7z.exe,是7z.exe包含的命令,列举如下:a: Adds files to archive. 添加至压缩包a命令可用参数:-i (Include)-m (Method)-p (Set Password)-r (Recurse)-sfx (creat

13、e SFX)-si (use StdIn)-so (use StdOut)-ssw (Compress shared files)-t (Type of archive)-u (Update)-v (Volumes)-w (Working Dir)-x (Exclude)b: Benchmarkd: Deletes files from archive. 从压缩包中删除文件d命令可用参数:-i (Include)-m (Method)-p (Set Password)-r (Recurse)-u (Update)-w (Working Dir)-x (Exclude)e: Extract解压文

14、件至当前目录或指定目录e命令可用参数:-ai (Include archives)-an (Disable parsing of archive_name)-ao (Overwrite mode)-ax (Exclude archives)-i (Include)-o (Set Output Directory)-p (Set Password)-r (Recurse)-so (use StdOut)-x (Exclude)-y (Assume Yes on all queries)l: Lists contents of archive.t: Testu: Updatex: eXtract

15、with full paths用文件的完整路径解压至当前目录或指定目录x命令可用参数:-ai (Include archives)-an (Disable parsing of archive_name)-ao (Overwrite mode)-ax (Exclude archives)-i (Include)-o (Set Output Directory)-p (Set Password)-r (Recurse)-so (use StdOut)-x (Exclude)-y (Assume Yes on all queries)七、调用VBScript程序使用 Windows 脚本宿主,可以

16、在命令提示符下运行脚本。CScript.exe 提供了用于设置脚本属性的命令行开关。用法:CScript 脚本名称 脚本选项. 脚本参数.选项:/B 批模式:不显示脚本错误及提示信息/D 启用 Active Debugging/E:engine使用执行脚本的引擎/H:CScript 将默认的脚本宿主改为 CScript.exe/H:WScript 将默认的脚本宿主改为 WScript.exe (默认)/I 交互模式(默认,与 /B 相对)/Job:xxxx执行一个 WSF 工作/Logo 显示徽标(默认)/Nologo 不显示徽标:执行时不显示标志/S 为该用户保存当前命令行选项/T:nn 超

17、时设定秒:允许脚本运行的最长时间/X 在调试器中执行脚本/U 用 Unicode 表示来自控制台的重定向 I/O“脚本名称”是带有扩展名和必需的路径信息的脚本文件名称,如d:adminvbscriptschart.vbs。“脚本选项和参数”将传递给脚本。脚本参数前面有一个斜杠 (/)。每个参数都是可选的;但不能在未指定脚本名称的情况下指定脚本选项。如果未指定参数,则 CScript 将显示 CScript 语法和有效的宿主参数。八、将批处理转化为可执行文件:由于批处理文件是一种文本文件,任何人都可以对其进行随便编辑,不小心就会把里面的命令破坏掉,所以如果将其转换成.com格式的可执行文件,不仅

18、执行效率会大大提高,而且不会破坏原来的功能,更能将优先级提到最高。Bat2Com就可以完成这个转换工作。小知识:在DOS环境下,可执行文件的优先级由高到低依次为.com.exe.bat.cmd,即如果在同一目录下存在文件名相同的这四类文件,当只键入文件名时,DOS执行的是,如果需要执行其他三个文件,则必须指定文件的全名,如name.bat。这是一个只有5.43K大小的免费绿色工具,可以运行在纯DOS或DOS窗口的命令行中,用法:Bat2Com FileName,这样就会在同一目录下生成一个名为FileN的可执行文件,执行的效果和原来的.bat文件一样。九、时间延迟什么是时间延迟?顾名思义,就是

19、执行一条命令后延迟一段时间再进行下一条命令。延迟的应用见下节:“模拟进度条”。1、利用ping命令延时例:1. echo off2. echo 延时前:%time%3. ping /n 3 127.0.0.1 nul4. echo 延时后:%time%5. pause复制代码解说:用到了ping命令的“/n”参数,表示要发送多少次请求到指定的ip。本例中要发送3次请求到本机的ip(127.0.0.1)。127.0.0.1可简写为127.1。“nul”就是屏蔽掉ping命令所显示的内容。2、利用for命令延时例:1. echo off2. echo 延时前:%time%3. for /l %i

20、in (1,1,5000) do echo %inul4. echo 延时后:%time%5. pause复制代码解说:原理很简单,就是利用一个计次循环并屏蔽它所显示的内容来达到延时的目的。3、利用vbs延迟函数,精确度毫秒,误差1000毫秒内例:1. echo off2. echo %time%3. call :delay 50004. echo %time%5. pause6. exit7. 8. :delay9. echo WScript.Sleep %1delay.vbs10. CScript /B delay.vbs11. del delay.vbs12. goto :eof复制代码

21、运行显示:10:44:06.4510:44:11.95请按任意键继续. . .上面的运行结果显示实际延时了5500毫秒,多出来的500毫秒时建立和删除临时文件所耗费的时间。误差在一秒之内。4、仅用批处理命令实现任意时间延迟,精确度10毫秒,误差50毫秒内仅用批处理命令就可以实现延迟操作。例:1. echo off2. set /p delay=请输入需延迟的毫秒数:3. set TotalTime=04. set NowTime=%time%5. :读取起始时间,时间格式为:13:01:05.956. echo 程序开始时间:%NowTime%7. :delay_continue8. set

22、/a minute1=1%NowTime:3,2%-1009. :读取起始时间的分钟数10. set /a second1=1%NowTime:-5,2%NowTime:-2%0-10000011. :将起始时间的秒数转为毫秒12. set NowTime=%time%13. set /a minute2=1%NowTime:3,2%-10014. : 读取现在时间的分钟数15. set /a second2=1%NowTime:-5,2%NowTime:-2%0-10000016. :将现在时间的秒数转为毫秒17. set /a TotalTime+=(%minute2%-%minute1%

23、+60)%60*60000+%second2%-%second1%18. if %TotalTime% lss %delay% goto delay_continue19. echo 程序结束时间:%time%20. echo 设定延迟时间:%delay%毫秒21. echo 实际延迟时间:%TotalTime%毫秒22. pause复制代码运行显示: 请输入需延迟的毫秒数:6000 程序开始时间:15:32:16.37 程序结束时间:15:32:22.37 设定延迟时间:6000毫秒 实际延迟时间:6000毫秒 请按任意键继续. . .实现原理:首先设定要延迟的毫秒数,然后用循环累加时间,直

24、到累加时间大于等于延迟时间。误差:windows系统时间只能精确到10毫秒,所以理论上有可能存在10毫秒误差。经测试,当延迟时间大于500毫秒时,上面的延迟程序一般不存在误差。当延迟时间小于500毫秒时,可能有几十毫秒误差,为什么?因为延迟程序本身也是有运行时间的,同时系统时间只能精确到10毫秒。为了方便引用,可将上面的例子改为子程序调用形式:1. echo off2. echo 程序开始时间:%Time%3. call :delay 104. echo 实际延迟时间:%totaltime%毫秒5. echo 程序结束时间:%time%6. pause7. exit8. 9. :-以下为延时子

25、程序-10. :delay11. echo off12. if %1= goto :eof13. set DelayTime=%114. set TotalTime=015. set NowTime=%time%16. :读取起始时间,时间格式为:13:01:05.9517. :delay_continue18. set /a minute1=1%NowTime:3,2%-10019. set /a second1=1%NowTime:-5,2%NowTime:-2%0-10000020. set NowTime=%time%21. set /a minute2=1%NowTime:3,2%-

26、10022. set /a second2=1%NowTime:-5,2%NowTime:-2%0-10000023. set /a TotalTime+=(%minute2%-%minute1%+60)%60*60000+%second2%-%second1%24. if %TotalTime% lss %DelayTime% goto delay_continue25. goto :eof复制代码十、模拟进度条下面给出一个模拟进度条的程序。如果将它运用在你自己的程序中,可以使你的程序更漂亮。1. echo off2. mode con cols=113 lines=15 &color 9f3. cls4. echo.5. echo程序正在初始化. . .6. echo.7. echo8. set/p=nul9. for /L %i in (1 1 38) do set /p a=nul10. echo 100%11. echo12. pause复制代码解说:“set /p a=nul”是输出每个“”的时间间隔,即每隔多少时间输出一个“”。十一、特殊字符的输入及应用开始 - 运行 - 输入cmd - edit - ctr

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1