0

我有一个非常简单的批处理脚本:

@echo off

if %1 == a goto AA
if %1 == b goto BB
goto end

:AA
echo a
goto end

:BB
echo b
goto end

:END
echo on

如果我用参数调用它test.bat a,我会得到我所期望的,但如果我不带任何参数调用它test.bat,我会得到goto was unexpected at this time.并且有问题的行是if %1 == a goto AA.

为什么?

4

2 回答 2

2

当没有参数时, 这条线if %1 == a goto AA将变为。if == a goto AA

如果您使用if .%1 == .a goto AA,则该行将变为if . == .a goto AA没有参数,并且 windows 不会抛出在if和之间没有任何内容的错误==

于 2012-08-15T20:41:58.537 回答
2

在每次比较中将变量和值都括在引号中。

if "%1" == "a" goto AA
if "%1" == "b" goto BB
goto end
于 2012-08-15T20:45:58.470 回答