从命令行删除USB设备
我正在为 Windows 7 构建一个备份脚本,我希望它执行的最后一个操作是安全地 “删除 "正在备份的 USB 驱动器。在我的印象中,将硬盘一直插入same的USB端口将保持相同的DEV_ID(如果我错了,请纠正我)。通过命令行(或PowerShell),我怎样才能告诉Windows在不需要用户输入的情况下安全地自动删除硬件?
只是作为一个固定的位置,其他的操作系统可能有办法做到这一点,也是很好的了解。
我正在为 Windows 7 构建一个备份脚本,我希望它执行的最后一个操作是安全地 “删除 "正在备份的 USB 驱动器。在我的印象中,将硬盘一直插入same的USB端口将保持相同的DEV_ID(如果我错了,请纠正我)。通过命令行(或PowerShell),我怎样才能告诉Windows在不需要用户输入的情况下安全地自动删除硬件?
只是作为一个固定的位置,其他的操作系统可能有办法做到这一点,也是很好的了解。
除了Uwe Sieber的 RemoveDrive 在另一个答案中提到的,还有一大堆实用程序可以完成这个任务。以下是一个小的列表。
USB Disk Ejector 主要是一个基于GUI的实用程序,但同样可以通过命令行来弹出程序运行的驱动器,或者通过指定驱动器字母/(部分)驱动器名称/挂载点等来弹出任何驱动器。免费且开源。
USB Safely Remove不是免费的,但它是一款磁盘删除工具,具有很多高级功能,当然包括命令行支持。Zentimo是其更大的兄弟,甚至_更多功能。
微软自己的 DevCon 是设备管理器的命令行版本。除了从KB页面上获得的原始Win2K/XP时代的版本外,还有更新的版本(包括32位和64位),可从各种MS来源获得,如本文在哪里找到DevCon.exe所述。DevCon.exe for Windows 7 (也可能是Windows 8)可以在适当的 Windows Driver Kit (WDK)中找到,如 本线程中提到的(其中也包含 提取的可执行文件的下载链接)。
有人问是否有DOS提示符(Win7的cmd.exe)命令来弹出拇指驱动器? “,不幸的是,它被关闭了,因为它是这个帖子的重复。然而,这个问题是关于在Windows恢复控制台/系统恢复命令提示符中弹出U盘的问题,所以上面的任何实用程序都不太可能有帮助。在这种情况下,使用 Diskpart 的以下方法应该可以。
1.输入diskpart
并等待diskpart提示 (DISKPART>
)
输入list volume
仔细记下U盘的卷号(使用列出的属性,如驱动器的字母、标签、类型和大小以获得帮助)
输入select volume <number>
,其中<number>
是上面提到的卷号
输入remove all dismount
输入exit
退出Diskpart
现在您应该可以安全地移除U盘而不用担心数据丢失。
根据本7tutorials-article,你可以通过设置 “快速移除 "来启用安全拔插。这将禁用写缓存每个设备,其中的性能影响是 "可以忽略不计 "的?其针对Windows 7的步骤如下。
( 编辑 ) 根据 this howtogeek-article ,设置 "快速移除 "时还是要小心。这将禁用写缓存,因此可以避免大部分问题。但有些程序可能仍然在写东西,直到被明确地弹出/删除。( 编辑结束 )
步骤。
-将设备插入U盘 -打开设备管理器 -展开磁盘驱动器 -右键点击你的可移动驱动器,例如 "USB2.0闪存盘USB设备” - 选择 “属性 ” - 点击 “策略 "选项卡 - 启用 "快速删除"(禁用 "更好的性能")
( 编辑 ) 注意,你需要使用 "设备管理器 "来更改设置,不能从 "文件资源管理器 "进行更改。(至少在我的Windows 10版本中是这样。)
找不到一个内部命令(感谢MS),外面也没有一个脚本能用,去掉字母是一个很差的方法,交互式的方式也不酷,讨厌用第三方工具。在我的情况下,使用我的硬盘上20年的东西:内部的Microsoft Windows Sysinternals可以帮助解决这个问题。
sync -e x:
-刷新U盘 -弹出U盘 -保留字母 -不扭曲USB树
如果有锁,用Sysinternals的handle或procexp就能找到。