VBScript - отключение USB-накопителя

У меня скоро будет утомительный проект. Мне нужно вставить USB-накопитель в компьютер, затем скопировать на него три файла, затем отключить его и повторить 3000 раз (буквально). Я надеялся придумать какой-нибудь VBScript, который сократит мои действия до простого

  1. вставьте флешку,
  2. дважды щелкните файл .vbs,
  3. извлеките флешку.

Я полагаю, что придумать копию и вставить часть кода не так уж сложно, если я каждый раз вставляю USB в один и тот же порт. Верно ли это предположение? Однако настоящая проблема заключается в отключении / извлечении USB-накопителя. Есть ли какой-нибудь простой код сценария VB, который может это сделать?


person user736887    schedule 21.11.2011    source источник
comment
диски будут подключаться и отключаться по одному   -  person user736887    schedule 21.11.2011
comment
RemoveDrive и Eject Media - бесплатное программное обеспечение для командной строки от Уве Зибера на сайте uwe-sieber.de   -  person foxidrive    schedule 20.09.2014


Ответы (4)


Это был первый результат Google для размонтирования vbscript: Отключение USB-накопителей


Это работало в Windows 7, если скрипт запускался с повышенными правами (от имени администратора):

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

mountvol входит в состав Windows.


Вероятно, вы даже можете уменьшить объем ввода, запросив букву диска, к которой монтируются ваши USB-накопители, и, если есть диск, скопируйте файлы, а затем отключите.

person josh3736    schedule 21.11.2011
comment
Я просмотрел эту ветку перед тем, как опубликовать это. Проблема в том, что это файл .exe, а не vbscript, я надеялся, что весь этот код будет запускаться только из одного файла .vbs. - person user736887; 21.11.2011
comment
Это приводит к тому, что диск полностью отделяется от буквы диска, поэтому, даже если вы отключите и снова подключите, диск больше не будет монтироваться. - person jviotti; 23.11.2015

Поскольку вы делаете это с помощью флэш-накопителя, вы можете поместить на него DevCon и использовать DevCon для извлечения диска ..

http://support.microsoft.com/kb/311272

или вы также можете попробовать DevEject

http://translate.google.com/translate?u=http://www.withopf.com/tools/deveject/&langpair=de%7Cen

person Drew Chapin    schedule 21.11.2011
comment
Вы должны сделать свой сценарий так, чтобы его копия была извлечена на ПК перед выполнением, в противном случае он может не извлекаться безопасно или вообще не извлекаться, поскольку он находится на флеш-накопителе, которое вы извлекаете. - person Drew Chapin; 21.11.2011
comment
USB-накопители будут пустыми, и мне нужно будет скопировать файлы с жесткого диска на флешку. Я не думаю, что мне все равно разрешат копировать файл кода на флешку, поскольку для моей работы нужны только три конкретных файла. - person user736887; 21.11.2011
comment
Эти компьютеры объединены в сеть? Должен быть способ получше, чем скручивание этих файлов. - person Drew Chapin; 21.11.2011
comment
Цель этого проекта - разместить по три определенных файла на каждом из 3000 USB-накопителей. Я просто ищу скриптовое решение, чтобы упростить эту повторяющуюся задачу. - person user736887; 21.11.2011
comment
Если компьютеры объединены в сеть, я могу помочь вам сделать так, чтобы все, что вам нужно было сделать, это подключить все диски, перейти к одному компьютеру, выполнить один сценарий и затем отключить диски. - person Drew Chapin; 21.11.2011
comment
@druciferre: Я думаю, вы неправильно понимаете, чего пытается достичь OP. Подумайте о записи файлов на компакт-диски для распространения - кроме флеш-накопителей вместо компакт-дисков. - person josh3736; 21.11.2011
comment
Я правильно понял. Я полностью понимаю, что ему нужно делать. Я пытаюсь сообщить вам и оператору, если компьютеры подключены к сети, и у него есть административная учетная запись на всех из них, я могу сделать так, чтобы его процесс шел на каждый отдельный компьютер, подключал флэш-накопитель. Перейдите на один конкретный компьютер, щелкните сценарий, а затем отключите диски, когда сценарий завершится. Я мог бы сделать то же самое, если бы он хотел, чтобы компьютер записывал компакт-диск. - person Drew Chapin; 21.11.2011

Мой ответ не очень-то связан, но если вы хотите использовать Linux, у меня будет полный программный стек именно для этого. Он подключается к системе udev Linux и автоматически форматирует USB-накопители, подключенные к определенным USB-портам, затем копирует файлы на накопитель, отключает накопитель и информирует пользователя.

Мы использовали это для копирования данных на более чем 500 USB-накопителей.

person Matthias Steinbauer    schedule 20.09.2014

Лучший вариант, который я могу найти, - это:

1) откройте оболочку, запустите 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-накопитель безопасно, или вы можете извлечь фантом, чтобы извлечь его.

person Pedro    schedule 10.04.2018