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

net use delete in batch if drive exists

我想要可以像这样连接网络驱动器的安装脚本:

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

我需要涵盖两个场景。

  1. 运行 PC重启后测试(无光盘v:可用)
  2. 运行反复测试。 v盘:已经存在,需要删除重新映射

我不能把它放到 window 启动,因为断开连接有超时,映射需要在 运行 脚本之前完成,所以它确保驱动器可用(并且未断开连接)。

提供的脚本在重启电脑后不起作用,因为 v: 不存在。它需要一些修改,例如

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

我对上面伪代码的批处理语法不太熟悉。

只检查映射是否存在

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

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

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

TL;DR:

以下将卸载驱动器 I 而不在控制台上打印任何内容并将 errorlevel 保持为 0。

net use I: /delete /Y > NUL 2>&1 || dir > NUL

详情:

虽然接受的答案是正确的,但如果未安装驱动器,它会引发 errorlevel。因为我只想检查和卸载现有驱动器而不更改错误级别,所以我想出了上面的命令。

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

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

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

来源: https://ss64.com/nt/net-use.html

Disconnect from a share and close all resources (undocumented)
 NET USE [driveletter:] /DELETE /Y