เอาอุปกรณ์ USB ออกจากบรรทัดคำสั่ง


61

ฉันกำลังสร้างสคริปต์สำรองสำหรับ Windows 7 และการกระทำสุดท้ายที่ฉันต้องการให้ดำเนินการคือ "ลบ" ไดรฟ์ USB ที่สำรองไว้อย่างปลอดภัย ฉันอยู่ภายใต้การแสดงผลที่เสียบไดรฟ์เข้ากับพอร์ต USB เดียวกันตลอดเวลาจะยังคงเหมือนเดิม DEV_ID (แก้ไขฉันถ้าฉันผิด) ด้วยบรรทัดคำสั่ง (หรือ PowerShell) ฉันจะบอก Windows ให้ถอดฮาร์ดแวร์ออกโดยอัตโนมัติได้อย่างไรโดยไม่ต้องป้อนข้อมูลจากผู้ใช้

เช่นเดียวกับผู้ที่เป็นเจ้าของระบบปฏิบัติการอื่น ๆ ที่อาจมีวิธีการทำเช่นนี้ก็เป็นสิ่งที่ดีที่จะได้รับรู้เช่นกัน


5
ฉันต้องยอมรับความผิดหวังด้วย“ คำตอบ” ด้านล่างซึ่งไม่เข้าใจอย่างชัดเจนว่าสิ่งใดที่ถูกถามและให้ตัวเลือกที่เห็นได้ชัดว่าไร้ประโยชน์สำหรับงานระบบอัตโนมัติตามที่ถาม” `_ಠ
Synetech

> ฉันอยู่ภายใต้การแสดงผลที่เสียบไดรฟ์เข้ากับพอร์ต USB เดียวกันตลอดเวลาจะยังคงเหมือนเดิม DEV_ID แก้ไขให้ฉันถ้าฉันผิด ถูกต้อง. Windows ถือว่าไดรฟ์และพอร์ตที่เสียบเข้ากับคู่ที่ระบุ โดยเสียบเข้ากับพอร์ตอื่น (ซึ่งไม่เคยเสียบปลั๊ก) คุณจะเรียกใช้ฟังก์ชันการติดตั้งไดรเวอร์ของ Windows ถ้าคุณกำหนดอักษรระบุไดรฟ์ที่ไม่ต่อเนื่องกับไดรฟ์ข้อมูลแล้วการเสียบเข้ากับพอร์ตใหม่จะไม่เก็บจดหมายนั้นไว้และจะได้รับจดหมายที่มีอยู่ถัดไปและคุณต้องกำหนดตัวอักษรใหม่ด้วยตนเอง
Synetech

1
(ผิดปกติพอถ้าคุณเสียบไดรฟ์เข้ากับพอร์ตและให้ Windows ติดตั้งไดรเวอร์สำหรับมันแล้วกำหนดไม่ต่อเนื่องกันไดรฟ์ตัวอักษรไปแล้วถอดปลั๊กเสียบในที่แตกต่างกันไดรฟ์ที่มียี่ห้อเดียวกันรุ่น และขนาดจากนั้น Windows จะจัดการเหมือนกับว่าคุณเสียบไดรฟ์ก่อนหน้าอีกครั้ง)
Synetech

คุณช่วยอัปเดตชื่อให้ถูกต้องได้ไหม ฉันกำลังมองหาคำตอบในการลบ "อุปกรณ์" USB ไม่ใช่ไดรฟ์ "USB"

คำตอบ:


32

RemoveDriveให้บริการฉันดีในอดีต


4
ลบไดรฟ์ \ x64> RemoveDrive.exe f: -Lเป็นรหัสสำหรับผู้ที่รีบ
fedmich

จบลงด้วยการทำงานสำหรับฉัน WqlEventQuery ที่น่าสนใจฉันมีสายยังคงรอจนกว่าคุณจะดึงไดรฟ์ออกมา ไม่รู้อะไรเกี่ยวกับสิ่งนี้ แต่มันทำให้ฉันประหลาดใจ ไม่เป็นปัญหาสำหรับฉันในกรณีนี้
samuelesque

1
RemoveDrive เป็นสิ่งที่ดี แต่ปัญหาคือว่ามันลบทั้งไดรฟ์ สำหรับเครื่องอ่านบัตรแทนที่จะปล่อยการ์ดออก (เช่นคลิกขวาและเลือกดีดออกจากคอมพิวเตอร์ของฉัน) และให้คุณเสียบปลั๊กอีกเครื่องได้มันจะถอดเครื่องอ่านบัตรทั้งหมดออกโดยต้องถอดปลั๊กออกและเสียบใหม่ เสียบหรือแย่กว่านั้นการรีบูตเครื่องหากมีเครื่องอ่านการ์ดในตัว (สามารถทำผ่านซอฟต์แวร์ได้ แต่น่ารำคาญ)
Synetech

คุณสามารถเรียกใช้จาก cygwin ได้เช่นกัน
Kevin Sadler

65

นอกเหนือจากRemoveDriveของ Uwe Sieber ที่กล่าวถึงในคำตอบอื่น ๆ ยังมียูทิลิตี้มากมายที่สามารถทำสิ่งนี้ได้ รายการเล็ก ๆ ดังนี้:

  • USB Disk Ejectorนั้นเป็นยูทิลิตี้ที่ใช้ GUI เป็นหลัก แต่สามารถใช้งานได้ดีพอ ๆ กันจากบรรทัดคำสั่งเพื่อนำไดรฟ์ที่โปรแกรมใช้งานหรือไดรฟ์ใด ๆ โดยระบุชื่อไดรฟ์ / (บางส่วน) / ชื่อไดรฟ์ ฟรีและโอเพ่นซอร์ส

    ตัวถอดดิสก์ USB

  • USB Safely Removeไม่ฟรี แต่มันเป็นสาธารณูปโภคและการกำจัดดิสก์บนเตียรอยด์ที่มีจำนวนมากคุณลักษณะขั้นสูงรวมทั้งของหลักสูตรการสนับสนุนบรรทัดคำสั่ง Zentimoเป็นพี่ชายที่ใหญ่กว่าของตนกับแม้ เพิ่มเติม คุณสมบัติ

    เอา USB ออกอย่างปลอดภัย

  • DevConของ Microsoft เป็นDevice Manager เวอร์ชันบรรทัดคำสั่ง นอกจากรุ่น Win2K / XP ดั้งเดิมที่มีอยู่ในหน้า KB แล้วยังมีรุ่นใหม่ (ทั้ง 32 และ 64 บิต) พร้อมใช้งานจากแหล่งต่าง ๆ ของ MS ตามที่กล่าวไว้ในบทความค้นหา DevCon.exeนี้ DevCon.exe สำหรับ Windows 7 (และอาจเป็น Windows 8 เช่นกัน) สามารถพบได้ในWindows Driver Kit (WDK)ที่เหมาะสมดังที่กล่าวไว้ในหัวข้อนี้ (ซึ่งยังมีลิงค์ดาวน์โหลดไปยังไฟล์ปฏิบัติการที่แตกออกมา )

    devcon status *หรือdevcon hwids *หรือdevcon findall =usb(สำหรับรายชื่อที่กระชับยิ่งขึ้น) ควรบอก ID ฮาร์ดแวร์ของอุปกรณ์ ตัวอย่างเช่น:

    USB \ VID_0781 & PID_7113 \ 0001162825
    ชื่อ:
    ไดรเวอร์อุปกรณ์จัดเก็บข้อมูล USB กำลังทำงาน

    จากนั้นคุณสามารถลองนำอุปกรณ์ออกด้วยdevcon remove "USB\VID_0781&PID_7113"(อนุญาตให้ใช้สัญลักษณ์แทนเช่น * ได้ แต่ควรระวังมิเช่นนั้นคุณอาจต้องลบสิ่งอื่นโดยสิ้นเชิง!)


มีคนถามว่า " มีพรอมต์คำสั่ง DOS (cmd.exe จาก Win7) เพื่อเลื่อนไดรฟ์หัวแม่มือหรือไม่ " ซึ่งน่าเสียดายที่ปิดเหมือนสำเนาของเธรดนี้ อย่างไรก็ตามคำถามเกี่ยวกับการนำไดรฟ์ USB ออกในขณะที่อยู่ในพร้อมท์รับคำสั่งของWindows Recovery Console / System Recovery Promptดังนั้นจึงไม่น่าเป็นไปได้ที่ยูทิลิตี้ด้านบนจะช่วยได้ ในสถานการณ์เช่นนี้วิธีต่อไปนี้ที่ใช้Diskpartควรทำงานได้:

  1. พิมพ์diskpartและรอพรอมต์ diskpart ( DISKPART>)

  2. ชนิด list volume

  3. จดบันทึกหมายเลขไดรฟ์ USB อย่างระมัดระวัง (ใช้คุณสมบัติที่ระบุไว้เช่นอักษรชื่อไดรฟ์ฉลากประเภทและขนาดเพื่อขอความช่วยเหลือ)

  4. ประเภทselect volume <number>ที่<number>เป็นหมายเลขวอลุ่มที่ระบุไว้ข้างต้น

    Diskpart

  5. ชนิด remove all dismount

  6. พิมพ์exitเพื่อออกจาก Diskpart

ตอนนี้คุณควรจะสามารถลบไดรฟ์ USB ของคุณได้อย่างปลอดภัยโดยไม่ต้องกลัวว่าข้อมูลจะสูญหาย


1
ขอบคุณที่สละเวลาตอบคำถามของฉันแม้หลังจาก SU ปิดไปแล้ว ฉันไปข้างหน้าและทำตามคำแนะนำของ Jared Tritsch และลบไดรฟ์เพียงแค่ลบออก เมื่อฉันเปิดใช้งานแล็ปท็อปอีกครั้งฉันจะทดลองกับ DISKPART นี่คือลิงค์ไปยัง Specs ของ Microsoft สำหรับ DISKPART technet.microsoft.com/en-us/library/bb490893.aspx
zundarz

2
@zundarz: ไม่เป็นไร! นโยบายการลบเริ่มต้นใน Windows สำหรับอุปกรณ์แบบถอดได้คือการลบอย่างรวดเร็วซึ่งปิดใช้งานการเขียนแคชและอนุญาตให้หนึ่งลบไดรฟ์โดยไม่จำเป็นต้องลบออกอย่างปลอดภัยก่อน ดูภาพหน้าจอนี้มากขึ้น ดังนั้นข้อเสนอแนะของ Jared เกี่ยวกับการดึงดิสก์ไดรฟ์ไม่ควรทำให้เกิดการสูญเสียข้อมูลตามปกติหากไดรฟ์แบบถอดได้ได้รับการปฏิบัติเช่นเดียวกันใน Recovery Console เช่นกัน กระนั้นเพื่อความสงบของจิตใจฉันมักจะระมัดระวังที่จะลบไดรฟ์แต่ละตัวออกอย่างปลอดภัยก่อนที่จะดึงออกมา อาจเป็นยาหลอก แต่ช่วยให้ฉันไม่ต้องกังวล :)
Karan

ปล. ระวังด้วย Diskpart - มันทรงพลังและอันตรายมาก เหตุผลที่ฉันใช้มันสำหรับการถอดไดรฟ์เป็นเพราะมันมีอยู่ในทั้ง Recovery Console ของ XP และ Vista / 7's System Recovery Options / Command Prompt
Karan

ฉันลองใช้Diskpartขณะอยู่ในโหมด Windows ปกติ นี่คือข้อความที่ฉันได้รับหลังจากทำตามขั้นตอนที่ 5 ด้านบน "DiskPart ถอดอักษรชื่อไดรฟ์ออกเรียบร้อยแล้ว แต่คอมพิวเตอร์ของคุณต้องรีบูตก่อนที่การเปลี่ยนแปลงจะมีผล Diskpart เสร็จสิ้นการปิดวอลลุ่มเสียง" ฉันลองใช้มันในสื่อแบบถอดได้ (การ์ด SD) มากกว่าอุปกรณ์แบบถอดได้ (เช่นเครื่องอ่านการ์ด SD หรือ USB แฟลชไดรฟ์) ไฟแสดงสถานะ LED บนเครื่องอ่านไม่ได้ดับลง แต่ไฟยังคงอยู่ (เช่นหยุดกะพริบเนื่องจากบางครั้งเมื่อการ์ด SD อยู่ในนั้น) ดังนั้นฉันคิดว่ามันปลอดภัยแล้วที่จะลบ
Samir

3
หากต้องการยกเลิกการremove all dismountคำสั่งคุณต้องใช้mountvolคำสั่ง สำหรับข้อมูลเพิ่มเติมโปรดดูที่ห้องสมุด Technet ที่นี่และที่นี่ หลังจากที่คุณใช้mountvolคุณต้องรีบูตเพื่อให้การเปลี่ยนแปลงมีผล หรือคุณสามารถใช้การจัดการดิสก์เพื่อกำหนดอักษรชื่อไดรฟ์ใหม่
กลั้ว

16

เพื่อตอบคำถามนี้ ... คุณไม่จำเป็นต้องมีข้อมูลบุคคลที่สาม

ด้วย Command Line (หรือ PowerShell) ฉันจะบอก Windows ให้ถอดฮาร์ดแวร์ออกโดยอัตโนมัติได้อย่างไรโดยไม่ต้องป้อนข้อมูลจากผู้ใช้

เรียกใช้คำสั่งนี้: RunDll32.exe shell32.dll,Control_RunDLL hotplug.dll เพื่อเปิดกล่องโต้ตอบ Safely Remove Hardware:

กล่องโต้ตอบการเอาฮาร์ดแวร์ออกอย่างปลอดภัย


4
คุณสามารถอธิบายสิ่งที่ทำ?
ลุคชาวแคนาดา

1
เปิดตัวการกำจัดที่ปลอดภัยสำหรับ usb
climenole

11
ฉันจะยังไม่ต้องคลิกอะไรซักอย่างเหรอ?
ลุคชาวแคนาดา

2
มันค่อนข้างเจ๋ง แต่น่าเสียดายสำหรับวัตถุประสงค์อัตโนมัติมันไม่ได้ดีไปกว่าคำแนะนำของ Karan
Synetech

1
hotplug.dll ควบคุมคือไม่มี_RunDLLไม่ทำงานสำหรับฉันบน Vista SP2
66001

2

เนื่องจากเป็นอุปกรณ์สำรองหมายความว่าเป็นอุปกรณ์จัดเก็บข้อมูลจึงสามารถทำได้จาก PowerShell - เพียงแค่แทนที่ X: ด้วยตัวอักษรไดรฟ์ที่คุณต้องการ:

$driveEject = New-Object -comObject Shell.Application
$driveEject.Namespace(17).ParseName("X:").InvokeVerb("Eject")

1
ฉันได้เห็นวิธีแก้ปัญหานี้ในเซิร์ฟเวอร์ผิดพลาดเช่นเดียวกับstackoverflowแต่ดูเหมือนว่าฉันจะไม่สามารถทำงานกับ HDD ภายนอกของฉันได้ ไม่มีข้อความผิดพลาดมันไม่ทำอะไรเลย การใช้"F:"หรือ"F:\"ไม่สร้างความแตกต่างเช่นเดียวกับที่ใช้ PowerShell ในฐานะผู้ดูแลระบบ การลบอย่างปลอดภัยผ่านทางทาสก์บาร์กำลังทำงาน ผมทำอะไรผิดหรือเปล่า?
flolilo

คำสั่ง powershell จริงจะไม่ส่งกลับข้อผิดพลาด (ข้อความสีแดง) ใด ๆ ?
Overmind

ถ้าฉันถอดปลั๊ก F: \ และเรียกใช้คำสั่งฉันได้รับข้อผิดพลาดที่ฉันไม่สามารถเรียกใช้เมธอดที่เป็น NULL (ข้อความเป็นภาษาเยอรมันดังนั้นฉันไม่แน่ใจว่าฉันแปลถูกต้องหรือไม่) ถ้าฉันรันคำสั่งด้วย F: \ เสียบปลั๊กจะไม่มีข้อความเลย - $errorว่างเปล่าด้วย ฉันใช้ PowerShell 5.1 บน Win10 Pro ตามวิธี F: \ เป็น HDD USB ภายนอกที่มีพาร์ติชันเดียวเท่านั้น (F :) - สามารถลบออกได้อย่างปลอดภัยผ่านทาสก์บาร์โดยไม่มีปัญหา
flolilo

ที่น่าสนใจเมื่อฉันใช้ USB-pendrive (ด้วยพาร์ทิชันเดียว) มันทำงานได้อย่างไม่มีที่ติ ทั้งสองได้เปิดใช้งานBetter performanceในนโยบายการเอาออกของพวกเขาแม้ว่าที่ดูเหมือนจะไม่สร้างความแตกต่างใด ๆ (pendrive USB ใช้งานได้กับการตั้งค่าทั้งสอง แต่ USB HDD ไม่ได้) เพนไดรฟ์ตัวที่สองที่ฉันเป็นเจ้าของยังไม่ชอบให้กดผ่าน PowerShell-command ทำงาน:ชนะ JetFlash 700 (16GB, FAT32), ไม่ทำงาน: Seagate Expansion Portable 2015 (4TB, NTFS), Sandisk Extreme (32GB, exFAT) ทุกอย่างลองหลายครั้งในพอร์ต USB เดียวกัน อีกครั้งการลบอย่างปลอดภัยผ่านแถบงานไอคอนจะทำงานเสมอ
flolilo

@flolilolilo ฉันมีปัญหาเดียวกัน ...
Ploni

1

ตามบทความ 7tutorials นี้คุณสามารถเปิดใช้งานการถอดปลั๊กอย่างปลอดภัยโดยการตั้งค่า "การลบอย่างรวดเร็ว" วิธีนี้จะปิดใช้งานการเขียนแคชต่ออุปกรณ์ซึ่งผลกระทบด้านประสิทธิภาพคือ "เล็กน้อย" ขั้นตอนสำหรับ Windows 7 อยู่ด้านล่าง

( แก้ไข ) ตามบทความในบทความนี้คุณควรจะระมัดระวังเมื่อตั้งค่า "การลบอย่างรวดเร็ว" วิธีนี้จะปิดใช้งานการเขียนแคชและจะป้องกันปัญหาส่วนใหญ่ แต่บางโปรแกรมอาจยังเขียนสิ่งที่เป็น 'สด' อยู่จนกระทั่งออก / นำออกอย่างชัดเจน ( สิ้นสุดการแก้ไข )

ขั้นตอน:

  • เสียบอุปกรณ์ในไดรฟ์ USB
  • เปิดตัวจัดการอุปกรณ์
  • ขยายดิสก์ไดรฟ์
  • คลิกขวาที่ไดรฟ์แบบถอดได้ของคุณเช่น "USB2.0 Flash Disk USB Device"
  • เลือกคุณสมบัติ
  • คลิกที่แท็บนโยบาย
  • เปิดใช้งาน "ลบอย่างรวดเร็ว" (ปิด "ประสิทธิภาพที่ดีขึ้น")

( แก้ไข ) โปรดทราบว่าคุณต้องใช้ตัวจัดการอุปกรณ์เพื่อเปลี่ยนการตั้งค่าไม่สามารถทำได้จาก File Explorer (อย่างน้อยในรุ่น Windows 10 ของฉัน)


1
ฟังดูเป็นความคิดที่ดีสำหรับไดรฟ์สำรอง! ดูเหมือนว่านี่เป็นการตั้งค่าเริ่มต้น (อย่างน้อยในบัญชีของฉันSeagate BUP Slim BK USB External Drive)
Arvo Bowen

1
อุปกรณ์ที่เปิดใช้งานแคชเขียนไม่สามารถถอดออกได้อย่างรวดเร็ว
Overmind

1
เป็นไปได้ที่จะตั้งค่านี้ทั่วโลกเพื่อให้สามารถใช้กับที่เก็บข้อมูล USB ใด ๆ และทั้งหมดที่แนบมาในอนาคตได้หรือไม่
DuckMaestro
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.