VBScript - 卸载USB驱动器

4
我有一个繁琐的项目需要完成。我需要将一个USB闪存驱动器插入计算机,然后将三个文件复制到该驱动器上,然后卸载它并重复这个过程3000次(真的)。我希望能想出一些VBScript,可以将我的操作简化为以下步骤:
1. 插入USB闪存驱动器, 2. 双击.vbs文件, 3. 移除USB闪存驱动器。
我认为只要每次将USB插入相同的端口,那么编写复制和粘贴部分的代码并不太难。这个假设正确吗?但是,真正的问题是卸载/弹出USB驱动器。是否有任何简单的VB Script代码可以实现这一点?

驱动器将会逐一插入和拔出。 - user736887
RemoveDrive和Eject Media是由Uwe Sieber开发的命令行免费软件,可用于移除驱动器和弹出媒体。网址为http://www.uwe-sieber.de。 - foxidrive
4个回答

1

这是搜索“vbscript卸载”后的第一个谷歌结果:卸载USB驱动器


如果以管理员身份运行脚本,则在Windows 7上可以正常工作:

Set shell = WScript.CreateObject("WScript.Shell")
shell.Run "mountvol <drive>: /d"

mountvol 已包含在 Windows 中。


你甚至可以通过轮询USB闪存驱动器挂载的驱动器号来减少所需的输入,如果有驱动器存在,则复制文件并卸载。

在发布这篇文章之前,我已经查看了那个线程。问题是它是一个 .exe 文件,而不是一个 VBScript 文件,我希望所有的代码都能从一个 .vbs 文件中运行。 - user736887
1
这会导致驱动器完全与驱动器字母分离,因此即使您拔掉并重新插入,驱动器也不再被挂载。 - jviotti

0

我的回答与此不太相关,但如果您愿意使用Linux,我可以提供完整的软件堆栈来实现这一点。它的作用是钩入Linux udev系统,自动格式化连接到某些USB端口的USB闪存驱动器,然后将文件复制到驱动器上,卸载驱动器并通知用户。

我们使用这个工具将数据复制到500多个商品USB闪存驱动器中。


0

在执行之前,你应该让你的脚本先将自己复制到电脑上再进行弹出操作,否则由于你要弹出的是存储脚本的U盘,可能无法安全地或根本无法弹出。 - Drew Chapin
这些电脑联网了吗?一定有比通过人工传递文件更好的方法。 - Drew Chapin
如果这些电脑已经联网,我可以帮你做到只需将所有驱动器插入电脑,然后前往一台电脑执行一个脚本,最后拔掉驱动器即可。 - Drew Chapin
@druciferre:我认为你误解了OP想要实现的目标。就像将文件刻录到CD上进行分发一样,只不过这次是使用闪存驱动器。 - josh3736
没有误解。我完全理解他需要做什么。我试图告诉你和OP,如果这些计算机已经联网,并且他在所有计算机上都有管理帐户,我可以让他的过程是去到每台个人电脑,插入一个拇指驱动器。转到特定的一台电脑,单击一个脚本,然后在脚本完成时拔出驱动器。如果他想要PC烧录CD,我也可以做同样的事情。 - Drew Chapin
显示剩余2条评论

0
我能找到的最佳选项是:
1)打开一个 shell 并运行 mountvol 命令,找到 GUID。
\\?\Volume{1be3da43-6602-11e0-b9e6-f11e1c50f5b5}\
    F:\

2) 在脚本中执行 mountvol /p [GUID]

Dim eject
Set eject = WScript.CreateObject("WScript.Shell")
eject.Run "mountvol \\?\Volume{1be3da43-6602-11e0-b9e6-f11e1c50f5b5}\ /p"
Set eject = Nothing

这种方法唯一的问题是需要管理员权限才能删除驱动器字母。如果由用户调用,它将卸载驱动器,在这种情况下留下一个 F: 幻影。安全地移除 USB 驱动器,或者您可以弹出幻影以将其删除。

从安全角度来看,如果它在没有管理员权限的情况下运行,这应该是一个问题。 - Sam Ginrich

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接