为了账号安全,请及时绑定邮箱和手机立即绑定

求指教在cmd里call的用法

求指教在cmd里call的用法

BIG阳 2022-03-24 14:10:28
我在一个批处理程序中看到这么一行call format c: /q /u /autotest >nul请问这儿的call起什么作用拿出来在cmd里执行执行结果和没有call一样/////////////////////////////////////////////call attrib -h -r c:\autoexec.bat >nulecho @echo off >c:\autoexec.batecho call format c: /q /u /autotest >nul >>c:\autoexec.batecho call deltree /y c: >nul >>c:\autoexec.bat/////////////////////////////////////////////
查看完整描述

2 回答

?
慕标琳琳

TA贡献1830条经验 获得超9个赞

从批处理程序调用另一个批处理程序。

CALL [drive:][path]filename [batch-parameters]

batch-parameters 指定批处理程序所需的命令行信息。

如果命令扩展名被启用,CALL 会如下改变:

CALL 命令现在将卷标当作 CALL 的目标接受。语法是:

CALL:label arguments

一个新的批文件上下文由指定的参数所创建,控制在卷标被指定
后传递到语句。您必须通过达到批脚本文件末两次来 "exit" 两次。
第一次读到文件末时,控制会回到 CALL 语句的紧后面。第二次
会退出批脚本。键入 GOTO /?,参看 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 可以被其他有效数值替换。
%~ 语法被一个有效参数号码终止。%~ 修定符不能跟 %*
使用



查看完整回答
反对 回复 2022-03-28
?
精慕HU

TA贡献1845条经验 获得超8个赞

Call语句调用另一个(子)程序,并等待其执行后返回正确或错误结果.
返回的位置是Call语句的末尾.

Start语句调用另一个(子)程序,但是不需返回.

请比较:
call attrib -h -r c:\auto.bat
start attrib -h -r c:\auto.bat

或:
call attrib -h -r c:\autoexec.bat
start attrib -h -r c:\autoexec.bat



查看完整回答
反对 回复 2022-03-28
  • 2 回答
  • 0 关注
  • 824 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信