Batch file 此时在我的批处理文件中出现意外的goto

Batch file 此时在我的批处理文件中出现意外的goto,batch-file,if-statement,cmd,Batch File,If Statement,Cmd,我正在尝试创建一个批处理文件,但我的goto一直说“goto在此时是意外的”,这是我的代码 @echo off if %firstrun% == 5 goto shut 后来 set firstrun=5 最后 :shut echo o snap shutdown -s -f -t 120 goto passk 它之所以抱怨是因为,如果firstrun为空,那么命令语法错误并失败。简单的解决方案是在被比较的变量和常量周围加引号 if "%firstrun%" == "5" goto

我正在尝试创建一个批处理文件,但我的goto一直说“goto在此时是意外的”,这是我的代码

@echo off
if %firstrun% == 5 goto shut
后来

set firstrun=5
最后

:shut

echo o snap

shutdown -s -f -t 120

goto passk

它之所以抱怨是因为,如果
firstrun
为空,那么命令语法错误并失败。简单的解决方案是在被比较的变量和常量周围加引号

if "%firstrun%" == "5" goto :shut

或者事先检查变量是否为空

if defined firstrun (
    rem Variable had a value.
    if %firstRun% == 5 goto :shut
)

如果要将
%firstrun%
的值与一个数字进行比较,此方法非常有用,因为if语句中的quote方法可能会干扰该功能。

这是因为,如果
firstrun
为空,则命令语法错误且失败。简单的解决方案是在被比较的变量和常量周围加引号

if "%firstrun%" == "5" goto :shut

或者事先检查变量是否为空

if defined firstrun (
    rem Variable had a value.
    if %firstRun% == 5 goto :shut
)

如果要将
%firstrun%
的值与数字进行比较,此方法非常有用,因为if语句中的quote方法可能会干扰该功能。

批处理文件的其余部分在哪里?为了有人能帮助你,你需要发布的不仅仅是你所拥有的,这是隐私。找到答案是绝对必要的吗?然后混淆敏感部分。大多数情况下,批处理文件代码没有那么敏感。但我的最佳猜测是,您没有为firstrun变量指定值,因此IF命令将成为错误,因为您在比较的左侧没有任何内容。在比较的每一面都加上引号。没错,一开始没有指定的变量,但如果我添加一个,每次运行批处理时,它都会认为这是第一次运行itSo来解决您的问题。应该有。批处理文件的其余部分在哪里?为了有人能帮助你,你需要发布的不仅仅是你所拥有的,这是隐私。找到答案是绝对必要的吗?然后混淆敏感部分。大多数情况下,批处理文件代码没有那么敏感。但我的最佳猜测是,您没有为firstrun变量指定值,因此IF命令将成为错误,因为您在比较的左侧没有任何内容。在比较的每一面都加上引号。没错,一开始没有指定的变量,但如果我添加一个,每次运行批处理时,它都会认为这是第一次运行itSo来解决您的问题。应该有。