如果驱动器存在,net use 批量删除
net use delete in batch if drive exists
我想要可以像这样连接网络驱动器的安装脚本:
net use v: /delete || EXIT /B 1
net use v: "\vmware-hostservername\share Folder"
我需要涵盖两个场景。
- 运行 PC重启后测试(无光盘v:可用)
- 运行反复测试。 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
我想要可以像这样连接网络驱动器的安装脚本:
net use v: /delete || EXIT /B 1
net use v: "\vmware-hostservername\share Folder"
我需要涵盖两个场景。
- 运行 PC重启后测试(无光盘v:可用)
- 运行反复测试。 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