Вопрос по – Определите USB и скопируйте *. * На USB-накопитель, используя пакетный скрипт

4

Я пытаюсь написать пакетный скрипт для обнаружения USB-накопителя и, если он подключен, например, копияc:\test\big.txt на USB-накопитель и зацикливание, чтобы обнаружить другую флешку.

Вы хотите скопировать файлы или директории? das_j

Ваш Ответ

4   ответа
1

о котором говорилось в следующем коде Код работает в XP и дает вам буквы USB-накопителя, если нет USB-устройства связано, это говорит вам так!

:: УСПЕХ @ 2:39 12 ОКТЯБРЯ 2013 ГОДА !!! :: УЛУЧШЕНО БОББИ ГОРЕХА

@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
        )
        )

Это при условии, конечно, оба диска вставлены.

0

@ Aacini У меня сегодня нет хороших настроек для этого случая, поэтому я вместо этого попытался найти свою веб-камеру USB.devmgmt.msc а такжеdevcon listclasses чтобы выяснить членство подключенной USB-камеры. После нескольких испытаний я пришел кdevcon find =Image USB\*, Я подумал, что это будет достаточно просто сделать то же самое для запоминающего устройства USB, поэтому я попыталсяdevcon find =Volume (по списочным классам). К сожалению, при этом выдается GUID, который затем необходимо сопоставить с буквой диска. Беглый взгляд наэтот переполнение предполагает, что вы можете сделать это из реестра, используяreg query, но в этот момент кажется, чтоfsutil было бы проще всего для вашего случая.

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

EDITНиже приведен правильный способ сделать это:

@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^)
         )
      )
   )
)
Как узнать, какой из них является USB-накопителем?
@Aacini Мне не хватило места для комментариев, поэтому я разместил их ниже.
Другой альтернативой является использование MicrosoftDevCon полезность.
Есть ли способ сделать второй вариант без прав администратора?
@StephenNiedzielski: Я не вижу причин для загрузки и использования дополнительного приложения, если проблема может быть решена с помощью установленных команд. С другой стороны, я просмотрел описание DevCon по этой ссылке и не могу найти способ идентифицировать USB-накопители. Не могли бы вы показать нам пример того, как это сделать? Спасибо!

Похожие вопросы