程。
子程序和主程序中的变量都是全局变量,其作用范围都是整个批处理程序。
传至子程序的参数在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
在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目录 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)
七、调用VBScript程序
使用 Windows 脚本宿主,可以在命令提示符下运行脚本。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 超时设定秒:允许脚本运行的最长时间 //X 在调试器中执行脚本
//U 用 Unicode 表示来自控制台的重定向 I/O
“脚本名称”是带有扩展名和必需的路径信息的脚本文件名称,如d:\\admin\\vbscripts\\chart.vbs。 “脚本选项和参数”将传递给脚本。脚本参数前面有一个斜杠 (/)。每个参数都是可选的;但不能在未指定脚本名称的情况下指定脚本选项。如果未指定参数,则 CScript 将显示 CScript 语法和有效的宿主参数。
八、将批处理转化为可执行文件:
由于批处理文件是一种文本文件,任何人都可以对其进行随便编辑,不小心就会把里面的命令破坏掉,所以如果将其转换成.com格式的可执行文件,不仅执行效率会大大提高,而且不会破坏原来的功能,更能将优先级提到最高。Bat2Com就可以完成这个转换工作。
小知识:在DOS环境下,可执行文件的优先级由高到低依次为.com>.exe>.bat>.cmd,即如果在同一目录下存在文件名相同的这四类文件,当只键入文件名时,DOS执行的是name.com,如果需要执行其他三个文件,则必须指定文件的全名,如name.bat。
这是一个只有5.43K大小的免费绿色工具,可以运行在纯DOS或DOS窗口的命令行中,用法:Bat2Com FileName,这样就会在同一目录下生成一个名为FileNme.com的可执行文件,执行的效果和原来的.bat文件一样。
九、时间延迟
什么是时间延迟?顾名思义,就是执行一条命令后延迟一段时间再进行下一条命令。
延迟的应用见下节:“模拟进度条”。
1、利用ping命令延时 例:
?? @echo off
?? echo 延时前:%time% ?? ping /n 3 127.0.0.1 >nul ?? echo 延时后:%time% ?? pause
复制代码