如果有条件使用goto触发器,则简单“命令的语法不正确”

时间:2015-09-02 21:46:21

标签: windows batch-file cmd

我想对Windows命令脚本中的第一个参数进行一些基本检查。我们称之为foo.cmd(简化内容如下所示)。此脚本导致错误消息“命令的语法不正确”。转动@echo on,我可以看到原因是包含ifgoto的任何行。如果我用goto :usage替换echo bar,那么脚本就像我期望的那样工作。

@echo off

if "%~1"=="" goto :usage
if "%~1"=="/?" goto :usage
if "%~1"=="--help" goto :usage

goto :run

:usage
echo Usage: foo <parameter>
goto :eof

:run
echo Actual command will go here
goto :eof

我错过了一些明显的东西吗?我已经看了很多其他的问题和例子,这看起来应该可行。

1 个答案:

答案 0 :(得分:2)

问题是echo Usage: foo <parameter><>是重定向运算符,您告诉命令解释器将echo输出重定向到>无处。您需要像^<^>

一样逃避它们
echo Usage: foo ^<parameter^>

要了解有关重定向的更多信息并找到一些示例,请按照this external link