net use如果驱动器存在则批量删除

时间:2015-10-05 06:19:35

标签: batch-file net-use

我想设置可以连接网络驱动器的脚本:

net use v: /delete || EXIT /B 1
net use v: "\\vmware-hostservername\share Folder" 

我需要涵盖两种情况。

  1. 重启PC后运行测试(无光盘v:可用)
  2. 反复运行测试。 Disc v:已经存在,需要再次删除和映射。
  3. 我无法将它放到窗口启动中,因为在运行脚本之前需要断开连接并且需要完成映射,因此它确保驱动器可用(而不是断开连接)。

    重启PC后提供的脚本无效,因为v:不存在。它需要一些修改,如

    if exists V: net use v: /delete || EXIT /B 1
    

    我不太熟悉上面psedocode的批处理语法。

2 个答案:

答案 0 :(得分:3)

只检查映射是否存在

net use v: && (net use v: /delete /Y || exit /b 1)

执行net use v:以显示驱动器的信息。然后它使用条件执行运算符&&,即,如果前一个命令成功,则执行下一个命令。

如果驱动器存在,那么它只是尝试删除映射,在这种情况下,使用条件执行操作符||(如果前一个命令失败,则执行下一个命令)。

答案 1 :(得分:1)

<强> TL; DR:

以下将卸载驱动器... awk not found. Using previously generated mylib c files in C:/Anaconda2/Whisker Tracking/generated. ... -- Could NOT find BISON (missing: BISON_EXECUTABLE) Bison not found. Using previously generated parameter parser. -- Found unsuitable Qt version "5.6.2" from C:/Anaconda2/Library/bin/qmake.exe ... -- Generating done -- Build files have been written to: C:/Anaconda2/WhiskerTracking/build 而不在控制台上打印任何内容并将I保持为0。

errorlevel

<强>详情:

虽然接受的答案是正确的,但如果未安装驱动器,则会引发net use I: /delete /Y > NUL 2>&1 || dir > NUL 。由于我只想检查和卸载现有驱动器而不更改错误级别,我想出了上面的命令。

errorlevel尝试立即卸载驱动器net use I: /delete /Y,而I将输出重定向到> NUL 2>&1设备(将其隐藏在控制台中)。

如果卸载失败(未检测到挂载),则条件执行NUL开始,||将当前目录内容打印到dir > NUL设备(在控制台上再次打印)。这会将errorlevel重置为0。

最终结果是控制台上没有打印任何内容,错误级别保持为0。