2012-06-03 53 views

回答

8
@echo off 
for %%d in (D: E: F: G: H: I: etc...) do (
    if exist %%d\nul (
     echo USB at drive %%d connected 
    ) 
) 

編輯:下面是做到這一點的正確方法:

@echo off 
for /F "tokens=1*" %%a in ('fsutil fsinfo drives') do (
    for %%c in (%%b) do (
     for /F "tokens=3" %%d in ('fsutil fsinfo drivetype %%c') do (
     if %%d equ Removable (
      echo Drive %%c is Removable (USB^) 
     ) 
    ) 
    ) 
) 
+2

你怎麼知道哪一個是USB驅動器? –

+0

另一種替代方法是使用Microsoft的[DevCon](http://support.microsoft.com/kb/311272)實用程序。 –

+0

@StephenNiedzielski:如果可以通過安裝的命令解決問題,我認爲沒有理由下載和使用額外的應用程序。另一方面,我查看了該鏈接上的DevCon描述,並找不到識別USB驅動器的方式。你能告訴我們一個怎麼做的例子嗎?謝謝! – Aacini

0

@Aacini我今天沒有一個好的設置這種情況,所以我不是試圖找到我的USB攝像頭。我使用devmgmt.mscdevcon listclasses來確定連接的USB攝像頭所具有的成員身份。經過幾次測試,我到達devcon find =Image USB\*。我認爲這對於USB大容量存儲設備來說會很簡單,所以我嘗試了devcon find =Volume(每個listclasses)。不幸的是,這會拋出一個GUID,然後你必須映射到一個驅動器盤符。粗略瀏覽一下this溢出表明你可以使用reg query從註冊表中這樣做,但在這一點上,fsutil對你的情況似乎最簡單。

1

上面的代碼有已參加了在下面的代碼 代碼工作在XP中,併爲您的USB驅動器盤符,如果沒有USB設備 連接,它會告訴你這麼一大敗筆!

::成功@ 2:39 AM在2013年10月12日! ::改進BY BOBBY GOREJA

@echo off 

set usbdrv= 
set usb=No 
:: Above two lines on 12 Oct 2013 

fsutil fsinfo drives >de 
type de | find "Drives:" /v >dlist 

for /F "tokens=1" %%c in ('type dlist') do (

       for /F "tokens=3" %%d in ('fsutil fsinfo drivetype %%c') do (

       rem echo Token is %%d 

      if %%d equ Removable (

      echo Drive %%c is Removable (USB^) 

      set usbletter=%%c 
      set usb=Yes 

      echo USB drive letter is %usbletter% 

rem  set usbdrv = %%c <<< this does NOT work! 
rem    echo USB1 drive letter is %usbdrv% 

                   ) 
             ) 
            ) 
del de 
del dlist 

      echo REPEAT:Device at %usbletter% 

if "%usb%"=="No" echo No USB Device Connected . 
set usb= 
1

我知道這是舊的,但....

@echo off 

for /F "usebackq tokens=1,2,3,4 " %%i in (`wmic logicaldisk get caption^,description^,drivetype 2^>NUL`) do (

if %%l equ 2 (
copy c:\test\big.txt %%i 
     ) 
     ) 

這是假設的過程中兩個驅動器插入。

相關問題