如何在 Windows 下挂载和卸载硬盘(Unix 方式)

如何在 Windows 下挂载和卸载硬盘(Unix 方式)

我的工作电脑上有两个很少使用的 USB 硬盘。它们具有省电模式,闲置几分钟后就会进入睡眠状态。

每当我打开文件的上下文菜单时,驱动器就会被唤醒(很可能是由“发送到”处理程序引起的)。因此,我弹出了驱动器,但除了拔下并重新插入外,我找不到其他方法将其取回。

有没有办法卸载驱动器,然后仅在我真正需要它们时才重新安装它们?(在 Windows 7 Ultimate 上。)

答案1

使用以下方法删除驱动器号mountvoldiskmgmt.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 中测试

相关内容