我的工作电脑上有两个很少使用的 USB 硬盘。它们具有省电模式,闲置几分钟后就会进入睡眠状态。
每当我打开文件的上下文菜单时,驱动器就会被唤醒(很可能是由“发送到”处理程序引起的)。因此,我弹出了驱动器,但除了拔下并重新插入外,我找不到其他方法将其取回。
有没有办法卸载驱动器,然后仅在我真正需要它们时才重新安装它们?(在 Windows 7 Ultimate 上。)
答案1
使用以下方法删除驱动器号mountvol
或diskmgmt.msc
。如果没有驱动器号,它们将不会出现在电脑或者发给。
mountvol Q: /p
使用/p
实际上会卸载该设备。在旧版 Windows 中,您只有/d
,它只会取消分配驱动器号,但会保持卷的挂载。
需要时重新分配,使用打印的卷 ID mountvol
:
mountvol Q: \\?\Volume{1be3da43-6602-11e0-b9e6-f11e1c50f5b5}\
您还可以使用相同的工具将卷挂载到空文件夹(Unix 样式):
mkdir C:\fs\backup-disk
mountvol C:\fs\backup-disk \\?\Volume{1be3da43-6602-11e0-b9e6-f11e1c50f5b5}\
所有这些操作都需要管理员权限。
(事实上,您甚至可以在备份脚本中直接使用卷 ID,而无需将其安装在任何地方。例如,\\?\Volume{1be3da43-6602-11e0-b9e6-f11e1c50f5b5}\projects
而不是Q:\projects
。)
答案2
使用 DISKPART 将磁盘设置为离线,
即使重新启动或重新开机后,它仍将保持离线状态
使用 DISKPART 将其重新设置为在线
这可以在脚本中完成
使磁盘 2 脱机的命令文件:
脱机.cmd
echo list disk > c:\windows\temp\namexxxx.none
echo select disk 2 >> c:\windows\temp\namexxxx.none
echo offline disk >> c:\windows\temp\namexxxx.none
echo exit >> c:\windows\temp\namexxxx.none
diskpart /s c:\windows\temp\namexxxx.none
erase c:\windows\temp\namexxxx.none
pause
将磁盘 2 置于联机状态的命令文件:
在线命令
.
echo select disk 2 ........
echo online disk ......
.
以管理员身份执行
答案3
正确的答案是使用 /P 参数来 mountvol(请参阅接受答案中的评论以了解为什么 /D 不够用)但这仅适用于较新的 Windows 版本(NT 内核版本 6 及以上)。
实用devcon
程序描述这答案适用于所有 NT 版本
答案4
CMD 没有实现弹出 USB 驱动器的功能。但是,它可以调用已实现所需功能的 Win COM 对象,例如Shell.Application
通过 powershell、VBS、JS 等。
或者(如果您知道如何与 USB 主机接口),您可以从 Win CMD 创建一个可执行文件,将命令直接发送到 USB 或通过(Windows)操作系统,然后从 CMD 调用/运行它(类似于编写 COM 对象或 Powershell 命令行)。
在 CMD 的 powershell 中:
powershell "$driveEject = New-Object -comObject Shell.Application; $driveEject.Namespace(17).ParseName(\"E:\").InvokeVerb(\"Eject\"); start-sleep -s 3"
通过 powershell 弹出磁盘还需要将其拔出并重新插入才能重新安装。否则,磁盘可能会被卸载,因此无法访问,直到通过mountvol
或再次安装它diskpart
。
例如使用 mountvol:
REM unmount
mountvol e: /D or /P
REM mount for access
mountvol e: \\?\Volume{device GUID in hex with hyphens}\
mountvol
允许将设备安装到文件夹例如C:\fakedisk\
以及驱动器号。
例如使用 diskpart:
REM unmount
(
echo select volume 3
echo remove letter=e dismount
) | diskpart
REM mount again for access
(
echo select volume 3
echo assign letter=e
) | diskpart
在 Win 10 cmd 中测试