Batch file 如何监视特定命令行错误(Windows)?

Batch file 如何监视特定命令行错误(Windows)?,batch-file,Batch File,我需要一个包含多个驱动器映射语句的批处理文件,如下所示: @echo off net use Q: \\serve\share 当驱动器已经连接时,我得到系统错误85。我如何监控85错误并采取我自己的行动(比如已经连接了廉价的goto)?如果是85以外的任何错误,我希望看到显示的消息(或者从变量抓取它并显示它…无论什么) 我尝试了一些我发现的示例,但我似乎无法抑制系统错误显示,也无法找出如何专门针对85错误设置陷阱。如果我能得到一个关于如何进行错误抑制、捕获等的示例,我可能会手工编写其余的代码

我需要一个包含多个驱动器映射语句的批处理文件,如下所示:

@echo off
net use Q: \\serve\share
当驱动器已经连接时,我得到系统错误85。我如何监控85错误并采取我自己的行动(比如已经连接了廉价的goto)?如果是85以外的任何错误,我希望看到显示的消息(或者从变量抓取它并显示它…无论什么)

我尝试了一些我发现的示例,但我似乎无法抑制系统错误显示,也无法找出如何专门针对85错误设置陷阱。如果我能得到一个关于如何进行错误抑制、捕获等的示例,我可能会手工编写其余的代码

谢谢

net use Q: \\serve\share 2>&1 | find "85" &&(
  echo error 85
)

??

在映射之前检查映射,而不是在映射之后检查错误

编辑以更正现有地图搜索中的错误

    call :doMap q: "\\server\share"
    ....

:doMap drive share
    rem search for drive map in server
    net use | find /i "%~1" | find /i "%~2" > nul
    if errorlevel 1 (

        rem if not found, test if drive letter is mapped
        rem and remove map if needed
        net use | find /i "%~1" > nul && net use "%~1" /delete >nul

        rem map drive to server share
        net use %~1 "%~2" > nul

    ) 
    goto :eof

谢谢,看起来很棒。您的调用是否表示代码的其余部分将位于一个单独的文件中,该文件将根据需要为每个要检查/映射的驱动器调用?否,所有代码都将放入一个批处理文件中。它被设计为主批处理文件中的一个子例程。只需在脚本末尾添加
:doMap
子例程即可。当需要映射时,不要调用
net use
来处理错误,而是使用
call:doMap letter share
,如示例所示。您是否有意同时使用
findstr
find
?如果是,为什么?@Mattwillkie,这是故意的,但也包括一个错误(现在更正)
findstr
更灵活,但负载更重,因此如果
find
足以解决问题,请使用它。我包括了
findstr
,以缩短初始过滤器,但我没有对其进行彻底测试,并且逻辑中存在错误,因此删除了它。非常感谢。