【问题标题】:Batch file: = was unexpected at this time批处理文件:= 此时出乎意料
【发布时间】:2013-11-06 23:42:01
【问题描述】:

最近我在批处理文件中遇到了另一个问题。在我想要执行某些操作的地方,我收到以下错误:

= 此时出乎意料。

我之前也遇到过这个错误,但它总是由于我修复的一个小错误。这次我认不出来了。

choice /c 12b /n
if %errorlevel%==1 (
if not exist C:\ntbobdings\1.txt (
set bding=Variable
set bdingno=1
goto IfNot
)

怎么了?这是一个小区域,但if %errorlevel%==1 (blah) 似乎还不错。

【问题讨论】:

  • 如果未定义 bdingno,您可能会收到该错误。打开回声,您应该能够准确地看到它发生在哪里以及出了什么问题。
  • 在此示例中,您缺少右括号。

标签: variables batch-file choice


【解决方案1】:

问题是如果您使用的变量没有返回值 - 什么都没有。因此,您正在输入:

if ==value Echo Test.

为了避免在 " 中的变量周围出现这种情况,即使它没有您输入的值:

if ""=="value" Echo Test.

换句话说就是这样做:

choice /c 12b /n
if "%errorlevel%"=="1" (
    if not exist C:\ntbobdings\1.txt (
    set bding=Variable
    set %bdingno%=1
    goto IfNot
))

这应该可以正常工作并帮助您了解问题所在。

莫娜。

【讨论】:

  • 我尝试将我的“if”语句变量用引号括起来,但我仍然遇到同样的错误。不过,非常感谢您的意见。我可能会上传更多代码以帮助任何人回答。
  • 使用set %bdingno%=1 将创建一个变量,无论 %bdingno% 的输出是什么。他没有说这是他想要的。应该是set bdingno=1
  • @Daemon - 这是不正确的;例如,如果%bdingo% 包含单词'test',则该行将创建一个名为%"test"% 的变量,其中包含"1"。它在 if 语句中起作用,因为它只是一个比较 - 它是一种处理空变量的方式。
  • @aruuu 抱歉,您当然是正确的。这就是我浏览答案所得到的。我将删除我的评论以防止将来混淆。
  • 嗯,不 - %errorlevel% 总是包含一个值,尽管原则是合理的。问题可能是缺少右括号,它会将未发布的剩余代码包含在if %errorlevel% 语句中,或者可能是变量errorlevel 已被分配了一个空格或逗号或分号的值,它会覆盖由 CMD 分配的魔法值(假设错误不在未发布的以下代码中)
【解决方案2】:

试试这个:

@ECHO OFF &SETLOCAL
choice /c 12b /n
if %errorlevel%==1 (
    if not exist C:\ntbobdings\1.txt (
        set bding=Variable
        set bdingno=1
        goto IfNot
    )
)
goto:eof
:ifnot
echo Hello world!

【讨论】:

    猜你喜欢
    • 2013-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-17
    • 2019-05-14
    • 2012-04-04
    相关资源
    最近更新 更多