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

Der*_*ler 48 windows windows-7 mount external-hard-drive

在我的工作计算机上,我有两个很少使用的 USB 硬盘驱动器。他们有一个省电模式,让他们在闲置几分钟后进入睡眠状态。

每当我打开文件的上下文菜单时,驱动器都会被唤醒(很可能是由“发送到”处理程序引起的)。所以我弹出了驱动器,但除了拔下并重新插入之外,我找不到恢复它的方法。

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

use*_*686 47

使用mountvol或删除驱动器号diskmgmt.msc。如果没有驱动器号,它们将不会出现在ComputerSend To 下

mountvol Q: /p
Run Code Online (Sandbox Code Playgroud)

使用/p实际上会卸载设备。在较旧的 Windows 版本上,您只有/d,它只会取消分配驱动器号,但会保持卷挂载。

需要时使用打印的卷 ID 重新分配mountvol

mountvol Q: \\?\Volume{1be3da43-6602-11e0-b9e6-f11e1c50f5b5}\
Run Code Online (Sandbox Code Playgroud)

您还可以使用相同的工具将卷挂载到空文件夹(Unix 风格)上:

mkdir C:\fs\backup-disk
mountvol C:\fs\backup-disk \\?\Volume{1be3da43-6602-11e0-b9e6-f11e1c50f5b5}\
Run Code Online (Sandbox Code Playgroud)

所有这些操作都需要管理员权限。


(实际上,您甚至可以在备份脚本中直接使用卷 ID,而无需将其挂载到任何地方。例如,\\?\Volume{1be3da43-6602-11e0-b9e6-f11e1c50f5b5}\projects代替Q:\projects.)

  • 顺便说一下,那个 GUID 是绑定到设备上的吗?如果我将设备插入另一台 Windows 机器,是否会一样?在同一台机器上重新启动之间它甚至是静态的吗? (6认同)
  • 这真的和在 UNIX 中卸载一样吗?在 UNIX 机器上,一旦卷被卸载,就可以安全地将它从计算机中取出。(也许它会让你的 SATA 总线不舒服,如果你没有合适的硬件支持,你可能需要重新启动,但你不会丢失任何数据。)如果你仍然可以以 \ 访问磁盘\?\Volume{...},这是否意味着文件系统仍然可供操作系统使用,因此可能在写入缓存中存在未刷新的数据等等? (3认同)
  • @DavidBalažic:`/D` 仅删除驱动器号(或路径)分配。卸载意味着分离*所有*这样的分配,以及关闭文件系统本身。请记住,Windows 默认将所有文件系统挂载在 `\\?\Volume{...}` 路径上,因此常规的 `mountvol` 用法只会添加/删除其他文件系统(例如 Linux 上的 `mount --bind /x /y`) . (3认同)
  • 因此,如果我希望 Windows 完全“放开”音量,我必须使用 /P 吗?要在 *nix 上获得与 _umount_ 相同的效果?使用 /D 删除一个字母/路径分配,而卷实际上保持挂载? (3认同)
  • @OliverSalzburg:卷 GUID 与该特定卷相关联,并且在重新启动后仍然存在。(它必须,为了持久的驱动器号分配和文件系统挂载才能工作。)但不幸的是,它是机器本地的。(据我所知,Windows 还没有办法通过标签或文件系统 UUID 来引用卷。) (2认同)
  • @OliverSalzburg:虽然如果您使用 [WinObj](http://technet.microsoft.com/en-us/sysinternals/bb896657) 浏览对象管理器,您会发现更多符号链接指向相同的 `\Device\.. .`:例如,要访问我的 iPod,我可以使用 `E:\Music` 或 `\\?\STORAGE#RemovableMedia#7&bec343e&0&RM#{53f5630a-b6bf-11d0-94f2-00a0c91efb8b}\Music`...但再次,这些似乎在机器之间是可变的。 (2认同)
  • @DavidBalažic:是的。 (2认同)

Opo*_*dre 6

使用 DISKPART 将您的磁盘设置为
脱机即使在重新启动或重新打开电源后它仍将保持脱机

使用 DISKPART 将其重新设置为联机

这可以在脚本中完成

使磁盘 2 脱机的命令文件:

离线命令

 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
Run Code Online (Sandbox Code Playgroud)

使磁盘 2 联机的命令文件:

在线命令

 .
 echo select disk 2 ........
 echo online disk ......
 .
Run Code Online (Sandbox Code Playgroud)

以管理员身份执行


Cos*_*ușă 5

正确答案是使用 /P 参数来 mountvol(请参阅已接受答案中的注释以了解为什么 /D 不够用),但这仅适用于最近的 Windows 版本(NT 内核版本 6 及更高版本)

答案中devcon描述的实用程序适用于所有 NT 版本