我想对Windows命令脚本中的第一个参数进行一些基本检查。我们称之为foo.cmd(简化内容如下所示)。此脚本导致错误消息“命令的语法不正确”。转动@echo on
,我可以看到原因是包含if
和goto
的任何行。如果我用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
我错过了一些明显的东西吗?我已经看了很多其他的问题和例子,这看起来应该可行。
答案 0 :(得分:2)
问题是echo Usage: foo <parameter>
行<
和>
是重定向运算符,您告诉命令解释器将echo
输出重定向到>
无处。您需要像^<
和^>
:
echo Usage: foo ^<parameter^>
要了解有关重定向的更多信息并找到一些示例,请按照this external link。