
Я создаю скрипт резервного копирования для Windows 7, и последнее действие, которое я хочу, чтобы он выполнил, — это безопасное «извлечение» USB-накопителя, на который он делает резервную копию. У меня сложилось впечатление, что подключение диска ктакой жеUSB-порт все время будет сохранять тот же DEV_ID (поправьте меня, если я ошибаюсь). С помощью командной строки (или PowerShell) как я могу сказать Windows безопасно извлечь оборудование автоматически без ввода данных пользователем?
В качестве примера можно привести и другие операционные системы, в которых тоже есть возможность сделать то же самое.
решение1
УдалитьДискхорошо послужил мне в прошлом
решение2
Кроме Уве ЗибераУдалитьДискупомянуто в другом ответе, есть целая куча утилит, которые могут это сделать. Ниже приведен небольшой список:
Извлечение USB-дискав первую очередь это утилита на основе графического интерфейса, но ее можно использовать с тем же успехом из командной строки для извлечения диска, с которого запущена программа, или любого диска, указав букву диска / (частичное) имя диска / точку монтирования и т. д. Бесплатная и с открытым исходным кодом.
USB-устройство безопасного извлеченияне бесплатна, но это утилита для удаления диска на стероидах, с большим количествомрасширенные возможности, включая конечноподдержка командной строки.Зентимоего старший брат, сдаже более функции.
Собственный MicrosoftDevConэто командная строка версии диспетчера устройств. Помимо оригинальной версии Win2K/XP, доступной на странице базы знаний, существуют более новые версии (как 32-, так и 64-разрядные), доступные из различных источников MS, как указано в этомГде найти DevCon.exeстатья. DevCon.exe для Windows 7 (и, вероятно, Windows 8 тоже) можно найти в соответствующемКомплект драйверов Windows (WDK), как упоминалось вэта тема(который также содержит ссылки на скачиваниеизвлеченный исполняемый файл).
devcon status *
илиdevcon hwids *
илиdevcon findall =usb
(для более компактного списка) должен сообщить вам аппаратный идентификатор устройства. Например:USB\VID_0781&PID_7113\0001162825
Имя: Драйвер USB-накопителя
запущен.Затем вы можете попробовать удалить устройство с помощью
devcon remove "USB\VID_0781&PID_7113"
(подстановочные знаки, такие как *, разрешены, но будьте осторожны, иначе вы можете удалить что-то совсем другое!)
Кто-то спросил: "Существует ли команда DOS (cmd.exe из Win7) для извлечения флеш-накопителя?" который, к сожалению, был закрыт как дубликат этой темы. Однако вопрос был об извлечении USB-накопителей во времяКонсоль восстановления Windows/Командная строка восстановления системы, поэтому вряд ли какая-либо из вышеперечисленных утилит поможет. В такой ситуации следующий метод с использованиемDiskpartдолжно сработать:
Введите
diskpart
и дождитесь приглашения diskpart (DISKPART>
)Тип
list volume
Внимательно запишите номер тома USB-накопителя (для справки используйте указанные свойства, такие как буква диска, метка, тип и размер).
Тип
select volume <number>
, где<number>
номер тома указан вышеТип
remove all dismount
Введите
exit
, чтобы выйти из Diskpart.
Теперь вы сможете безопасно извлечь USB-накопитель, не опасаясь потери данных.
решение3
Чтобы ответить наэтотвопрос... Вам не нужны сторонние материалы.
Как с помощью командной строки (или PowerShell) указать Windows безопасно извлекать устройство автоматически, без участия пользователя?
Выполните эту команду, RunDll32.exe shell32.dll,Control_RunDLL hotplug.dll
чтобы открыть диалоговое окно «Безопасное извлечение устройства»:
решение4
Не удалось найти внутреннюю команду (спасибо MS), ни один скрипт там не работал, удаление буквы - плохой способ сделать извлечение, интерактивный способ тоже не круто, и ненавижу использовать сторонние инструменты. В моем случае, используя то, что находится на моем диске в течение 20 лет: inhouseMicrosoft Windows Sysinternalsпомогает делу:
sync -e x:
- очищает usb-накопитель
- извлекает usb-накопитель
- сохраняет письмо
- не искажает дерево USB
в случае блокировок используйте Sysinternalsручкаилипроцесcвыяснить.