Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
If statement IF语句不是';不起作用。批处理文件_If Statement_Batch File - Fatal编程技术网

If statement IF语句不是';不起作用。批处理文件

If statement IF语句不是';不起作用。批处理文件,if-statement,batch-file,If Statement,Batch File,我是批处理文件的初学者。所以我制作了一个基本的批处理文件,当我测试它时,它说命令的语法不正确。但我很确定它是正确的。我知道这是在我编码的IF部分,因为我放了几个等待脚本(使用VBS)。我还没有使用REM,所以我不知道问题出在哪里。我写的是这样的 @echo off b: set a=1 IF %a%==1 goto :a :a echo Test pause goto :b 在编码中,我还有很多其他IF%variable%==number语句,它们都工作得很好。发生了什么事 IF

我是批处理文件的初学者。所以我制作了一个基本的批处理文件,当我测试它时,它说
命令的语法不正确。
但我很确定它是正确的。我知道这是在我编码的IF部分,因为我放了几个等待脚本(使用VBS)。我还没有使用REM,所以我不知道问题出在哪里。我写的是这样的

@echo off

b:
set a=1

IF %a%==1 goto :a

:a

echo Test

pause

goto :b
在编码中,我还有很多其他
IF%variable%==number
语句,它们都工作得很好。发生了什么事

IF %a%==1 goto :a
应该是

IF %a%==1 goto a
为了获得进一步帮助,我在这里找到了解决方案:
它包含了您需要的所有信息。

首先,您的标签
b
的冒号位于错误的一侧,将其转换为一个命令,试图将默认驱动器设置为第二张软盘:-)

第二,虽然不是严格必要的,但我更喜欢标签本身:

    @echo off
:b
    set a=1
    IF %a%==1 goto :a
:a
    echo Test
    pause
    goto :b
运行此命令将导致:

C:\Users\Pax\Documents> testprog
Test
Press any key to continue . . . <ENTER>
Test
Press any key to continue . . . <ENTER>
Test
Press any key to continue . . . <ENTER>
Test
Press any key to continue . . . <CTRL-C>
Terminate batch job (Y/N)? y

C:\Users\Pax\Documents> _
C:\Users\Pax\Documents>testprog
试验
按任意键继续。
试验
按任意键继续。
试验
按任意键继续。
试验
按任意键继续。
是否终止批处理作业(是/否)?Y
C:\Users\Pax\Documents>_
paxdiablo说这可能没有必要,但它可以帮助标记自己的行,还有其他一些小事情可能没有必要,但可以帮助你有点条理,这将有助于你从长远来看,一种方法可以修复它,例如这样

如果%a%==1转到a,则
也可以更改为
IF%a%eq 1转到a
就像
goto
可以写成
goto:a
goto a
。 可以使用窗口的
标题添加标题


愉快的探索。

这是不对的,
goto
带有冒号的标签工作正常。似乎这是标签问题。虽然我有另一个问题,我有一个理论。如果使用If语句而不将变量设置为任何值,它是否会不起作用?再次感谢。解决了问题,我的理论是正确的。抱歉打扰了。:)变量设置为nothing可以正常工作。您只需尝试
echo[%xyzz%]
即可看到它的作用。如果未设置,您将获得未解释的
[%xyzy%]
。如果设置为1(例如),您将得到
[1]
。在任何情况下,您的变量都是在给定的代码中设置的。
@echo off
:b
set a=1
IF %a%==1 goto a
:a
echo Test
pause
goto b