例:
@echo off set var=100
rem ************循环开始了 :continue
echo 第%var%次循环 set /a var-=1
if %var% gtr 0 goto continue rem ************循环结束了 echo 循环执行完毕 pause
四、子程序
在批处理程序中可以调用外部可运行程序,比如exe程序,也可调用其他批处理程序,这些也可以看作子程序,但是不够方便,如果被调用的程序很多,就显得不够简明了,很繁琐。 在windowsXP中,批处理可以调用本程序中的一个程序段,相当于子程序,这些子程序一般放在主程序后面。
子程序调用格式:
CALL :label arguments
子程序语法: :label
command1 command2 ......
commandn goto :eof
在子程序段中,参数%0指标签:label
子过程一般放在最后,并且注意在主程序最后要加上exit或跳转语句,避免错误的进入子过程。
子程序和主程序中的变量都是全局变量,其作用范围都是整个批处理程序。
传至子程序的参数在call语句中指定,在子程序中用%1、%2至%9的形式调用,而子程序返回主程序的数据只需在调用结束后直接引用就可以了,当然也可以指定返回变量,请看下
面的例子。
子程序例1: @echo off
call :sub return 你好
echo 子程序返回值:%return% pause :sub
set %1=%2 goto :eof
运行结果:你好
子程序例2:设计一个求多个整数相加的子程序 @echo off set sum=0
call :sub sum 10 20 35
echo 数据求和结果:%sum% pause :sub
rem 参数1为返回变量名称 set /a %1=%1+%2 shift /2
if not \goto :eof
运行结果:65
五、用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目录 pwd
lcd d:\\download #本地目录
mget * #下载tmp1目录下的所有文件 bye #退出ftp
六、用7-ZIP实现命令行压缩和解压功能
语法格式:(详细情况见7-zip帮助文件,看得头晕可以跳过,用到再学) 7z
7z.exe的每个命令都有不同的参数
其中,7z是至命令行压缩解压程序7z.exe,
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)
七、调用VB******程序
使用 Windows 脚本宿主,可以在命令提示符下运行脚本。C******.exe 提供了用于设置脚
本属性的命令行开关。
用法:C****** 脚本名称 [脚本选项...] [脚本参数...]
选项:
//B 批模式:不显示脚本错误及提示信息 //D 启用 Active Debugging //E:engine 使用执行脚本的引擎
//H:C****** 将默认的脚本宿主改为 C******.exe
//H:W****** 将默认的脚本宿主改为 W******.exe (默认) //I 交互模式(默认,与 //B 相对) //Job:xxxx 执行一个 WSF 工作 //Logo 显示徽标(默认)
//Nologo 不显示徽标:执行时不显示标志 //S 为该用户保存当前命令行选项
//T:nn 超时设定秒:允许脚本运行的最长时间 //X 在调试器中执行脚本
//U 用 Unicode 表示来自控制台的重定向 I/O
“脚本名称”是带有扩展名和必需的路径信息的脚本文件名称,如d:\\admin\\vb******s\\chart.vbs。
“脚本选项和参数”将传递给脚本。脚本参数前面有一个斜杠 (/)。每个参数都是可选的;但不能在未指定脚本名称的情况下指定脚本选项。如果未指定参数,则 C****** 将显示 C****** 语法和有效的宿主参数。
八、将批处理转化为可执行文件:
由于批处理文件是一种文本文件,任何人都可以对其进行随便编辑,不小心就会把里面的命令破坏掉,所以如果将其转换成.com格式的可执行文件,不仅执行效率会大大提高,而且不会破坏原来的功能,更能将优先级提到最高。Bat2Com就可以完成这个转换工作。
小知识:在DOS环境下,可执行文件的优先级由高到低依次为.com>.exe>.bat>.cmd,即如果在同一目录下存在文件名相同的这四类文件,当只键入文件名时,DOS执行的是name.com,如果需要执行其他三个文件,则必须指定文件的全名,如name.bat。
这是一个只有5.43K大小的免费绿色工具,可以运行在纯DOS或DOS窗口的命令行中,用法:Bat2Com
FileName,这样就会在同一目录下生成一个名为FileNme.com的可执行文件,执行的效果和原来的.bat文件一样。