【批处理学习笔记】第四课:简单批处理命令(3)

简介: call 命令  CALL命令可以在批处理执行过程中调用另一个批处理,当另一个批处理执行完后,再继续执行原来的批处理CALL command调用一条批处理命令,和直接执行命令效果一样,特殊情况下很有用,比如变量的多级嵌套,见教程后面。

call 命令
  CALL命令可以在批处理执行过程中调用另一个批处理,当另一个批处理执行完后,再继续执行原来的批处理
CALL command
调用一条批处理命令,和直接执行命令效果一样,特殊情况下很有用,比如变量的多级嵌套,见教程后面。在批处理编程中,可以根据一定条件生成命令字符串,用call可以执行该字符串,见例子。
CALL [drive:][path]filename [batch-parameters]
调用的其它批处理程序。filename 参数必须具有 .bat 或 .cmd 扩展名。
CALL :label arguments
调用本文件内命令段,相当于子程序。被调用的命令段以标签:label开头
以命令goto :eof结尾。
另外,批脚本文本参数参照(%0、%1、等等)已如下改变:
     批脚本里的 %* 指出所有的参数(如 %1 %2 %3 %4 %5 ...)
     批参数(%n)的替代已被增强。您可以使用以下语法:(看不明白的直接运行后面的例子)
         %~1         - 删除引号("),扩充 %1
         %~f1        - 将 %1 扩充到一个完全合格的路径名
         %~d1        - 仅将 %1 扩充到一个驱动器号
         %~p1        - 仅将 %1 扩充到一个路径
         %~n1        - 仅将 %1 扩充到一个文件名
         %~x1        - 仅将 %1 扩充到一个文件扩展名
         %~s1        - 扩充的路径指含有短名
         %~a1        - 将 %1 扩充到文件属性
         %~t1        - 将 %1 扩充到文件的日期/时间
         %~z1        - 将 %1 扩充到文件的大小
         %~$PATH : 1 - 查找列在 PATH 环境变量的目录,并将 %1扩充到找到的第一个完全合格的名称。如果环境变量名未被定义,或者没有找到文件,此组合键会扩充到空字符串可以组合修定符来取得多重结果:
         %~dp1       - 只将 %1 扩展到驱动器号和路径
         %~nx1       - 只将 %1 扩展到文件名和扩展名
         %~dp$PATH:1 - 在列在 PATH 环境变量中的目录里查找 %1,并扩展到找到的第一个文件的驱动器号和路径。
         %~ftza1     - 将 %1 扩展到类似 DIR 的输出行。
    在上面的例子中,%1 和 PATH 可以被其他有效数值替换。%~ 语法被一个有效参数号码终止。%~ 修定符不能跟 %*使用注意:
参数扩充时不理会参数所代表的文件是否真实存在,均以当前目录进行扩展要理解上面的知识,下面的例子很关键。
例:
@echo off
Echo 产生一个临时文件 > tmp.txt
Rem 下行先保存当前目录,再将c:\windows设为当前目录
pushd c:\windows
Call :sub tmp.txt
Rem 下行恢复前次的当前目录
Popd
Call :sub tmp.txt
pause
Del tmp.txt
exit
:sub
Echo 删除引号: %~1
Echo 扩充到路径: %~f1
Echo 扩充到一个驱动器号: %~d1
Echo 扩充到一个路径: %~p1
Echo 扩充到一个文件名: %~n1
Echo 扩充到一个文件扩展名: %~x1
Echo 扩充的路径指含有短名: %~s1
Echo 扩充到文件属性: %~a1
Echo 扩充到文件的日期/时间: %~t1
Echo 扩充到文件的大小: %~z1
Echo 扩展到驱动器号和路径:%~dp1
Echo 扩展到文件名和扩展名:%~nx1
Echo 扩展到类似 DIR 的输出行:%~ftza1
Echo.
Goto :eof
例:
set aa=123456
set cmdstr=echo %aa%
call %cmdstr%
pause
本例中如果不用call,而直接运行%cmdstr%,将显示结果%aa%,而不是123456

目录
相关文章
|
9月前
|
Shell 测试技术
交互式shell脚本编程1
交互式shell脚本编程1
|
9月前
|
Shell
交互式shell脚本编程3
交互式shell脚本编程3
|
网络协议 Shell API
sqoop2系统入门之2汇总:用户指南shell命令【可收藏备查】
sqoop2系统入门之2汇总:用户指南shell命令【可收藏备查】
275 0
|
安全 数据安全/隐私保护 Windows
【批处理学习笔记】第三课:简单批处理命令(2)
cls 命令     清除屏幕。执行该命令后,屏幕上的所有信息都被清除,光标重新定位至屏幕左上角。REM 和 ::REM为注释命令,一般用来给程序加上注解,该命令后的内容不被执行,但能回显。其次, :: 也可以起到rem 的注释作用, 而且更简洁有效; 但有两点需要注意:第一, 任何以冒号:开头的字符行, 在批处理中都被视作标号, 而直接忽略其后的所有内容。
978 0
|
Windows
【批处理学习笔记】第五课:简单的批处理命令(4)
start 命令  调用外部程序,所有的DOS命令和命令行程序都可以由start命令来调用。    如:start calc.exe 即可打开Windows的计算器。  常用参数:   MIN 开始时窗口最小化   SEPARATE 在分开的空间内开始 16 位 Windows 程序   HIGH ...
1066 0
|
C语言
【批处理学习笔记】第七课:简单的批处理命令(6)
set 命令  set     设置环境变量 [适用场合]  设置声卡和路径等时用到 [用  法]  set [环境变量]=[字符串]            这条命令常常用在autoexec.bat中 [例  子]  C:\>set blaster=a220 i5 d1     设置声卡的参数         C:\>set path=c:\dos         path c:\dos含义相同 显示、设置或删除变量。
994 0
【批处理学习笔记】第六课:简单的批处理命令(5)
goto 命令GOTO会点编程的朋友就会知道这是跳转的意思。在批处理中允许以“:XXX”来构建一个标号,然后用GOTO XXX跳转到标号:XXX处,然后执行标号后的命令。例:if {%1}=={} goto noparmsif "%2"=="" goto noparms标签的名字可以随便起,但是最好是有意义的字符串啦,前加个冒号用来表示这个字符串是标签,goto命令就是根据这个冒号(:)来寻找下一步跳到到那里。
870 0