【发布时间】:2021-11-03 03:14:35
【问题描述】:
我在批处理文件中有以下代码行,暂时命名为 DriveBackup:
if %1%NOTSET==NOTSET call :finish 4
如果输入参数没有设置/给定,我调用完成的例程。我正在尝试传入一个错误代码(在本例中为 4),以便完成的例程在批处理文件终止之前吐出有用的错误消息。我明白了(回声开启)...
C:\Users\Daniel\Desktop>DriveBackup
4 was unexpected at this time.
C:\Users\Daniel\Desktop>if finish 4
C:\Users\Daniel\Desktop>
以下行代替它的工作......if %1%NOTSET==NOTSET goto donothing(无操作)
看起来“呼叫”正在退出。我如何不正确地拨打电话?你不能使用if条件来触发调用吗?完成例程位于批处理文件本身中。这不是对另一个批处理文件的调用。
【问题讨论】:
-
参数只有一个前导
%,而不是两边都有一个。另外,最好使用引号而不是其他文本,以防参数包含批量具有特殊含义的某些字符,因此请尝试if "%~1"=="" call :finish 4 -
为了更清楚地打开命令提示符窗口,键入
call /?并按[ENTER]键。您清楚地知道,只要启用了扩展,(默认情况下它们是),您就可以将参数传递给脚本中的标签,但重要的部分是它向您展示了这些参数如何被定义。您会注意到参数前面有一个百分比字符,它们没有包含在百分比字符之间。它还应该解释上面评论中使用的%~1的含义。 -
将
goto donothing替换为goto :donothing,你会遇到同样的问题……