dos编程高级技巧--结束篇。
一、交互界面设计。
没啥说的,看看高手设计的菜单界面吧:
echo off
clstitle 终极多功能修复。
menucls
color 0a
echo.echo
echo 请选择要进行的操作,然后按回车。
echoecho.
echo 1.网络修复及上网相关设置,修复ie,自定义屏蔽**。
echo.echo 2.病毒专杀工具,端口关闭工具,关闭自动**。
echo.echo 3.清除所有多余的自启动项目,修复系统错误。
echo.echo 4.清理系统垃圾,提高启动速度。
echo.echo q.退出。
echo.echo.
choset choice=
set /p choice= 请选择:
if not "%choice%"=set choice=%choice:~0,1%
if /i "%choice%"=1" goto ip
if /i "%choice%"=2" goto sets**e
if /i "%choice%"=3" goto kaiji
if /i "%choice%"=4" goto clean
if /i "%choice%"=q" goto endd
echo 选择无效,请重新输入。
echo.goto cho
只要学完本教程前面的章节,上面的程序应该能看懂了。
二、if…else…条件语句。
前面已经谈到,dos条件语句主要有以下形式。
if [not] errorlevel number command
if [not] string1==string2 command
if [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
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 (
command1
command2
2、对某集合执行循环语句。
for %%variable in (set) do 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] %variable in (set) do (
command1
command2
commandn
3、条件循环。
利用goto语句和条件判断,dos可以实现条件循环,很简单啦,看例子:
echo off
set var=0
rem循环开始了。
continue
set /a var+=1
echo 第%var%此循环。
if %var% lss 100 goto continue
rem循环结束了。
echo 循环执行完毕。
pause四、子程序。
在批处理程序中可以调用外部可运行程序,比如exe程序,也可调用其他批处理程序,这些也可以看作子程序,但是不够方便,如果被调用的程序很多,就显得不够简明了,很繁琐。
在windowsxp中,批处理可以调用本程序中的一个程序段,相当于子程序,这些子程序一般放在主程序后面。
子程序调用格式:
call :label arguments
子程序语法:
labelcommand1
command2
commandn
goto :eof
传至子程序的参数在call语句中指定,在子程序中用%1、%2至%9的形式调用,而子程序返回主程序的数据只需在调用结束后直接引用就可以了,当然也可以指定返回变量,请看下面的例子。
子程序例1:
echo off
call :sub return 你好。
echo 子程序返回值:%return%
pausesub
set %1=%2
goto :eof
运行结果:你好。
子程序例2:设计一个求多个整数相加的子程序。
echo off
set sum=0
call :sub sum 10 20 35
echo 数据求和结果:%sum%
pausesub
rem 参数1为返回变量名称。
set /a %1=%1+%2
shift /2
if not "%2"==goto sub
goto :eof
运行结果:65
在win98系统中,不支持上面这种标号调用,须将子程序单独保存为一个批处理程序,然后调用。
五、用ftp命令实现自动**。
ftp是常用的**工具,ftp界面中有40多个常用命令,自己学习了,不介绍了。这里介绍如何用dos命令行调用ftp命令,实现ftp自动登录,并上传**,并自动退出ftp程序。
其实可以将ftp命令组合保存为一个文本文件,然后用以下命令调用即可。
ftp -n -s:[[drive:]path]filename
上面的filename为ftp命令文件,包括登录ip地址,用户名、密码、操作命令等。
例:open 90.52.8.3 #打开ip
user iware #用户为iware
password8848 #密码。
bin #二进制传输模式。
prompt
cd tmp1 #切换至iware用户下的tmp1目录。
pwdlcd d:\download #本地目录。
mget * **tmp1目录下的所有文件。
bye #退出ftp
六、用7-zip实现命令行压缩和解压功能。
语法格式:(详细情况见7-zip帮助文件,看得头晕可以跳过,用到再学)
7z [.的每个命令都有不同的参数,请看帮助文件。
为压缩包名称。
为文件名称,支持通配符或文件列表。
其中,7z是至命令行压缩解压程序是包含的命令,列举如下:
a: adds files to archive. 添加至压缩包。
a命令可用参数:
-i (include)
-m (method)
-p (set password)
-r (recurse)
-sfx (create 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: benchmark
d: deletes files from archive. 从压缩包中删除文件。
d命令可用参数:
-i (include)
-m (method)
-p (set password)
-r (recurse)
-u (update)
-w (working dir)
-x (exclude)
e: extract解压文件至当前目录或指定目录。
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: test
u: update
x: extract 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 脚本宿主,可以在命令提示符下运行脚本。 提供了用于设置脚本属性的命令行开关。
用法:cscript 脚本名称 [脚本选项。脚本参数。
选项:/b 批模式:不显示脚本错误及提示信息。
/d 启用 active debugging
/e:engine 使用执行脚本的引擎。
/h:cscript 将默认的脚本宿主改为
/h:wscript 将默认的脚本宿主改为 (默认)
/i 交互模式(默认,与 //b 相对)
/job:xxxx 执行一个 wsf 工作。
/logo 显示徽标(默认)
/nologo 不显示徽标:执行时不显示标志。
/s 为该用户保存当前命令行选项。
/t:nn 超时设定秒:允许脚本运行的最长时间。
/x 在调试器中执行脚本。
/u 用 unicode 表示来自控制台的重定向 i/o
脚本名称”是带有扩展名和必需的路径信息的脚本文件名称,如d:\admin\vbscripts\
脚本选项和参数”将传递给脚本。脚本参数前面有一个斜杠 (/每个参数都是可选的;但不能在未指定脚本名称的情况下指定脚本选项。如果未指定参数,则 cscript 将显示 cscript 语法和有效的宿主参数。
八、将批处理转化为可执行文件:
由于批处理文件是一种文本文件,任何人都可以对其进行随便编辑,不小心就会把里面的命令破坏掉,所以如果将其转换成。com格式的可执行文件,不仅执行效率会大大提高,而且不会破坏原来的功能,更能将优先级提到最高。bat2com就可以完成这个转换工作。
小知识:在dos环境下,可执行文件的优先级由高到低依次为。com>.
exe>.bat>.cmd,即如果在同一目录下存在文件名相同的这四类文件,当只键入文件名时,dos执行的是如果需要执行其他三个文件,则必须指定文件的全名,如。
这是一个只有5.43k大小的免费绿色工具,可以运行在纯dos或dos窗口的命令行中,用法:bat2com
filename,这样就会在同一目录下生成一个名为的可执行文件,执行的效果和原来的。bat文件一样。
九、时间延迟。
本条引用[英雄]教程。
什么是时间延迟?顾名思义,就是执行一条命令后延迟一段时间再进行下一条命令。
1、利用ping命令延时。
例:@echo off
echo 延时前!
ping /n 3 127.0.0.1 >nul
echo 延时后!
pause解说:用到了ping命令的“/n”参数,表示要发送多少次请求到指定的ip。本例中要发送3次请求到本机的ip
127.0.0.1)。127.0.0.1可简写为127.1。“>nul”就是屏蔽掉ping命令所显示的内容。
2、利用for命令延时。
例:@echo off
echo 延时前!
for /l %%i in (1,1,5000) do echo %%i>nul
echo 延时后!
pause解说:原理很简单,就是利用一个计次循环并屏蔽它所显示的内容来达到延时的目的。
十、模拟进度条。
下面给出一个模拟进度条的程序。如果将它运用在你自己的程序中,可以使你的程序更漂亮。
echo off
mode con cols=113 lines=15 &color 9f
clsecho.
echo 程序正在初始化。 .
echo.echo
set/p= ■nul
echo 100%%
echopause
解说:“set /p a=■nul”是输出每个“■”的时间间隔,即每隔多少时间输出一个“■”
DOS批处理高级应用
时间 2009 10 16 21 05 58 点击 9 核心提示 精典的dos批处理高级应用分类 windows编程扩展名是bat 在nt 2000 xp 2003下也可以是cmd 的文件就是批处理文件。首先批处理文件是一个文本文件,这个文件的每一行都是一条dos命令 大部分时候就好象我们在dos提...
DOS批处理高级教程
第一章批处理基础 1 第一节常用批处理内部命令简介 1 1 rem和 1 2 echo和 1 3 pause 2 4 errorlevel 2 5 title 2 6 color 2 7 mode 2 8 goto和 3 9 find 3 10 start 命令 4 11 assoc和ftype 4...
DOS批处理高级教程
dos批处理高级教程精选合编20080331 windows xp cmd命令行高级教程精选合编 上 见9,10,11楼未完,续继整理 目录。第一章批处理基础。第一节常用批处理内部命令简介。1 rem 和 2 echo 和 3 pause 4 errorlevel 5 title 6 color 7...