我正在使用下面的批处理脚本并收到错误
(这时候是出乎意料的。
我知道问题出在第一行,但我不明白出了什么问题。
有任何想法吗 ?
script:
IF [%1]==[] (
:LOOP1
SET /P isDefault=Value Missing, do you want to use default values [1,1,10,Local Area Connection 2]?[y/n]
IF %isDefault%==y (
SET from=1
SET step=1
SET to=10
SET lan="Local Area Connection 2"
GOTO :USERLOOP
)
IF %isDefault%==n GOTO :END
GOTO :LOOP1
)
其实问题是not在第一行。
问题是cmd
当它解析时立即进行变量替换IF
声明,包括其正文。因此该行:
IF %isDefault%==y (
是有问题的,因为isDefault
当外部未设置IF
语句被解析,所以它变成:
IF ==y (
因此你会得到关于的错误(
出乎意料。您可以通过启用命令扩展来解决这个问题(SETLOCAL ENABLEDELAYEDEXPANSION
) for 延迟环境变量扩展 (see set /?
了解详情)。您还可以重写您的脚本:
@ECHO OFF
IF NOT "%1"=="" GOTO :EOF
:LOOP1
SET /P isDefault=Value Missing, do you want to use default values [1,1,10,Local Area Connection 2]?[y/n]
IF "%isDefault%"=="y" (
SET from=1
SET step=1
SET to=10
SET lan="Local Area Connection 2"
GOTO :USERLOOP
)
IF "%isDefault%"=="n" GOTO :EOF
GOTO :LOOP1
(我做了一些其他的改变,比如使用内置的:EOF
标签而不是:END
.)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)