Batch file 批次-“;“goto在这个时候出人意料”;

Batch file 批次-“;“goto在这个时候出人意料”;,batch-file,goto,Batch File,Goto,以下是我正在处理的批处理脚本: @echo off :programBEGIN set FILE=R3D-%input1%.txt mode con:cols=24 lines=25 color F set /p input1=}} INPUT: cls if %input1%=="" goto ERR1 goto programLIST :programLIST echo Hello :ERR1 echo Test pause 每当我试图运行bat文件,但没有输入任何值时,它就会关

以下是我正在处理的批处理脚本:

@echo off

:programBEGIN
set FILE=R3D-%input1%.txt
mode con:cols=24 lines=25
color F

set /p input1=}} INPUT: 
cls
if %input1%=="" goto ERR1
goto programLIST

:programLIST
echo Hello

:ERR1
echo Test
pause
每当我试图运行bat文件,但没有输入任何值时,它就会关闭,并快速提示“goto当时是意外的”


if语句的格式是否正确,或者这就是它一直关闭的原因?

因为如果未定义输入,脚本如下所示:

if =="" goto ERR1
if "%input1%"=="" goto ERR1
这是一个语法错误

试着这样做:

if =="" goto ERR1
if "%input1%"=="" goto ERR1

请尝试以下方法,而不是使用if语句:

IF DEFINED input1 goto ERR1
如果必须使用正常的If语句,可以尝试以下操作:

IF "%input1%"=="" goto ERR1

只是为了确定一下。除此之外,我看不出问题是从何而来。

如果定义了input1,则应为
,如果定义了
,则转到ERR1
您的
不正确。如果未定义input1…
,则应为
。如前所述,将对envvar
进行询问(使用空的
input1
),或者如果
input1
包含
fred
,则将询问
“fred”
(包括引号)。尝试设置带引号的envvar将导致该变量名的值报告,并且不会更改该变量。(嗯…这需要调查…)可能是