为什么MSG命令在批处理IF语句中无法正常工作?
问题原因
MSG 命令的标准语法要求第一个参数必须是目标用户名/会话ID/服务器名,你编写的MSG You need to install ImageMagick代码中,系统会把第一个空格分隔的参数You识别为要接收消息的目标用户名,当前系统不存在名为you的登录用户,因此抛出you does not exist or is disconnected的报错,该问题和转义规则、前置命令没有关联。
修复方案
如果要给当前登录的本机用户发送弹窗消息,将目标参数指定为*即可,修改后的MSG命令写法如下:MSG * "你需要安装ImageMagick"
各参数说明:
*代表向当前所有活跃会话的用户发送消息,单用户使用场景下就是给当前登录的你自己发送弹窗- 后续的消息内容建议用双引号包裹,避免消息包含空格、特殊符号时被系统拆分为多个参数识别
修改后的完整代码如下:
@echo off REM ### 检测Image Magick程序是否已安装 WHERE testcommand >nul 2>nul IF %ERRORLEVEL% NEQ 0 ( ECHO 未找到magick命令 MSG * "你需要安装ImageMagick" PAUSE )
内容的提问来源于stack exchange,提问作者Scerno
相关产品推荐
相关产品推荐

