【问题标题】:Was not expected batch error不是预期的批处理错误
【发布时间】:2016-03-30 13:13:18
【问题描述】:

我正在创建一个批处理 LAN 聊天室,并且用户部分工作正常,但我的管理员可以选择编辑聊天日志。

当我输入文字聊天时,我在这里得到了这个时候没有预料到的词。它与我用于管理的 if %text% EQU 行有关。

如何解决这个问题是我的代码。我需要能够输入任何内容并将其发送到字典文件以显示但如果输入了 EQU 术语则执行它们的操作。

:A
cls
echo.
echo Type What You Want To Chat // Press The "e" Key To Logoff Correctly
echo Type "manage" To Manage The Chat History
echo.
set /p text=
if %text% EQU e goto exiting
if %text% EQU E goto exiting
if %text% EQU manage goto managing
if %text% EQU Manage goto managing
echo.
echo >> Directory.txt [Admin] %name% says: %text%
echo.
goto :A

没有 if 行的完全相同的代码可以正常工作,但我需要它们。

假设我输入:这是测试文本,它会出错:是 这是一张图片:

已修复! (如果 "%text%" EQU "e" goto exiting) 已修复,谢谢。

【问题讨论】:

    标签: batch-file


    【解决方案1】:
    if "%text%" EQU "e" goto exiting
    

    等等。是标准修复。

    if 语法是特定的:if string op string

    引号指定有一个字符串可能包含空格等分隔符。

    顺便说一句,if /i ... 将使比较不区分大小写。

    另一种方法是

    if not defined var ...
    

    【讨论】:

    • 谢谢你解决了它我不敢相信我忘记了“”有些东西没有它们也能工作。
    • @TaylorLightfoot,是的,只要%text% 不为空,它就可以在没有"" 的情况下工作;一旦它为空,您就没有将任何东西与某物(if EQU e)进行比较,这会引发语法错误;使用引号,您实际上是将"""e" 进行比较; "" 还具有一些有毒字符不会损害代码的优点,例如 & 用于连接多个命令...
    • 在这种情况下,即使是空格也是“毒字符”。
    • 是的,我知道我只是出于某种原因忘记添加它们。感谢您的提醒。现在一切都很完美
    猜你喜欢
    • 2019-03-04
    • 2013-07-04
    • 1970-01-01
    • 1970-01-01
    • 2013-12-28
    • 1970-01-01
    • 1970-01-01
    • 2010-11-12
    • 2017-04-09
    相关资源
    最近更新 更多