Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/47: Рейтинг темы: голосов - 47, средняя оценка - 4.64
 Аватар для Vitorrio
18 / 8 / 2
Регистрация: 12.02.2010
Сообщений: 200

Проверка на новое устройство

20.03.2013, 21:00. Показов 8931. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне нужно чтобы bat файл запускался при появлении новой флешки в компьютере ,

ЛИБО

1) Чтобы bat файл был включен всегда, но тогда в цикле проверял на новое устройство , И при появлении его уже запускал некую процедуру,

Не по теме:

в моем же случае проверка на ID и в случае совпадения например отправлял данные на сайт методом POST/GET, но это только после того как первое будет сделано.



Как проще такое сделать?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.03.2013, 21:00
Ответы с готовыми решениями:

Обнаружено новое устройство
Знатоки XP ! Помогите! Работал с дополнительными "винтами", которые не всегда определялись БИОС-ом. Приходилось действовать через...

Совершенно новое устройство
Ребятушки , помогите разобраться в устройстве одного прибора. Прибор этот называется "Фарнсворт" , появляется в сериале...

Как добавить новое устройство в Apple Developer?
Здравствуйте, ситуация такая. Я создал приложение в XCODE для iphone. Получил сертификаты, создал Provisioning Profiles, в общем...

5
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
20.03.2013, 23:24
В цикле - это сильно затратно для ресурсов системы. Можно по событию.

Первой программой по ссылке пользовался и знаю как работает. Устанавливается как служба.
Удаление данных с флешки

Добавлено через 12 минут
Вот такое попробуйте:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
@echo off
Setlocal
For /F "Tokens=1,2* Delims==" %%i In ('WMIC LogicalDisk Where ^(DriveType^=2 And MediaType^=NULL^) Get Name^,VolumeSerialNumber /Value^|Find "="') Do Call :TestDisk %%i %%j
echo Disc = %USB%
echo ID = %ID%
if "%ID%"=="167EA4B7" start "" "http://mysite.com/index.php&alert=true"
pause>nul
exit /B
 
:TestDisk
  Set $%1=%2
  If %1==VolumeSerialNumber If Defined $%1 (Set USB=%$Name%& Set ID=%$VolumeSerialNumber%)
EXIT /B
Добавлено через 22 минуты
На всякий случай распишу как пользоваться usbdlm.

usbdlm - это программа без интерфейса, только служба.
Устанавливается так:
_install.cmd - установка службы
_start.cmd - запуск службы

Затем создаем пустой файл конфигурации в папке с программой:
Цитата Сообщение от USBDLM.ini
[OnArrival]
open=l:\Bash\TST5.cmd
Это означает - по событию подключения нового тома запускать TST5.cmd
Чтобы применить новую конфигурацию необходимо сделать стоп/старт службы:
_stop.cmd
_start.cmd

P.S. Полный список событий доступен в файле:
USBDLM_sample_full.ini

Добавлено через 7 минут



На всякий случай список всех доступных свойств класса Win32_LogicalDisk class
http://msdn.microsoft.com/en-u... s.85).aspx

Теперь когда все настроите и протестируете можно перевести работу в тихий режим без отображения окна батника:
Отключаем паузу - удалить строку № 7
прячем окно батника: hidec
Запуск простой, если не ошибаюсь:
Bash
1
hidec.exe c:\---\checkflash.cmd
Добавлено через 9 минут
Теперь когда найдем нужный носитель, чтобы не было видно запуска браузера,
напишем файл site.vbs

Visual Basic
1
2
3
4
5
6
7
8
With CreateObject("InternetExplorer.Application")
    .Visible = False 
    .Navigate "http://mysite.com/index.php?query=alert"
    Do While (.Busy Or .readyState <> 4)
        Wscript.Sleep 500
    Loop
    .Quit
End With
а строку № 6 заменим на такую:
Bash
6
if "%ID%"=="167EA4B7" start "" cscript.exe //nologo "site.vbs"
3
 Аватар для Vitorrio
18 / 8 / 2
Регистрация: 12.02.2010
Сообщений: 200
21.03.2013, 23:43  [ТС]
Dragokas,
Спасибо большое, Все так понятно и подробно расписано , что программа почти сразу заработала.., и в тихом режиме тоже.
Единственно уточнения(для тех кому может пригодиться):

1) hidec.exe c:\---\checkflash.cmd вместо c:\---\checkflash.cmd - подставляем свой cmd файл l:\Bash\TST5.cmd и главное пишем все это вместо open=l:\Bash\TST5.cmd

т.е. у меня получилось

Bash
1
open="C:\Bash\hidec.exe" "C:\Bash\TST5.cmd"
2) вместо этого if "%ID%"=="167EA4B7" start "" cscript.exe //nologo "site.vbs"

пишем

Bash
1
if "%ID%"=="167EA4B7" cscript.exe //nologo "C:\Bash\site.vbs" "%ID%" "%username%"
%ID% %username% это соотвественно переменные которые мы передаем в site.vbs

3) В самом site.vbs чтобы получить эти переменные

пишем это

Visual Basic
1
 .Navigate "http://mysite.com/index.php?query=alert&identifi=" & wscript.arguments(0) & "&login=" & wscript.arguments(1)
1
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
22.03.2013, 03:04
Получение серийного номера съемного устройства.
Сделал через парсинг PNPDeviceID класса Win32_DiskDrive.
Просьба протестировать.

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@echo off
Setlocal EnableDelayedExpansion EnableExtensions
 
For /F "Delims=" %%i In ('WMIC DiskDrive Where InterfaceType^='USB' Get PNPDeviceID /Value^|find "="') do Set PNP=%%i
 
Set "PNP=%PNP:\=" "%"
Set "PNP=%PNP:;=" "%"
Set "PNP=%PNP:&=" "%"
 
For %%i in ("%PNP%") do (
  if "!Prev:~0,4!"=="REV_" (Set Device_SN=%%i& Goto :ex)
  Set Prev=%%~i
)
:ex
 
Echo USB Device S/N = %Device_SN%
 
pause>nul
exit /B
2
1781 / 763 / 130
Регистрация: 09.04.2011
Сообщений: 1,325
22.03.2013, 07:08
Показывает правильно. Проверил на 2 флешках скриптом и утилиткой CheckUDisk_v5.4
Ось Windows XP SP3 x86
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
25.03.2013, 03:33
"Немного" модифицировал скрипт.
Теперь умеет показывать имена разделов всех подключенных съемных USB-устройств, которым принадлежит серийник.

Также показывает имена разделов всех ЖД, установленных в системе. В принципе, как вытянуть их S/N я знаю. Только вот они отображаются почему-то в отличие от VBscript в 16-ричном виде. (класс Win32_PhysicalMedia. Кстати, S/N SSD-дисков нужно получать еще как-то по-другому. S/N из этого класса с реальным не совпадает.)
Удивительно, но в интернете проиндексировано много ошибочной информации по программным кодам получения серийника самого уст-ва, а не раздела.

В общем, v.1.1.:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
@echo off
Setlocal EnableDelayedExpansion EnableExtensions
Echo.
::Получаем PNPDeviceID и PhysicalDrive Name устройств, подключенных по интерфейсу USB
echo Перечень cъемных накопителей:
echo.
For /F "Skip=2 Tokens=2-4 delims=," %%i In (
  'WMIC DiskDrive Where InterfaceType^="USB" Get Name^,PNPDeviceID^,Model /Value /format:csv 2^>nul'
) do (
    Set AtLeastOneDevice=true
    Call :Get_USB_SN "%%k" Device_SN
    Call :GetPartition "%%j" Drives
    Echo Model: %%i
    Echo %%j
    Echo Disk^(s^):     !Drives!
    Echo Device S/N:         !Device_SN!
    Echo.
)
if not defined AtLeastOneDevice Echo Съемных USB накопителей не обнаружено.
Echo.
Echo Перечень жестких дисков:
Echo.
For /F "Skip=2 Tokens=2-4 delims=," %%i In (
  'WMIC DiskDrive Where "InterfaceType^!^='USB'" Get Name^,PNPDeviceID^,Model /Value /format:csv'
) do (
    Call :GetPartition "%%j" Drives
    Echo Model: %%i
    Echo %%j
    Echo Disk^(s^):     !Drives!
    Echo.
)
pause>nul
Goto :eof
 
::Парсим часть с серийным номером устройства
:Get_USB_SN %1-in.PNPDeviceID %2-out.Device_S/N
Set "%~2="
Set "PNP=%~1"
Set "PNP=%PNP:\=" "%"
Set "PNP=%PNP:;=" "%"
Set "PNP=%PNP:&=" "%"
 
Set _Prev=
For %%i in ("%PNP%") do (
  if "!_Prev:~0,4!"=="REV_" (Set "%~2=%%i"& Exit /B)
  Set _Prev=%%~i
)
Exit /B
 
::Конвертация PhysicalDrive Name -> Partition Names -> Drive Names
:GetPartition %1.in-PhysicalDrive_Name %2-out.Drive_Names
Set "%~2="
For /F "skip=2 delims==, tokens=3,6-7" %%i In (
  'WMIC path Win32_DiskDriveToDiskPartition get /format:csv'
) do (
  if %%i=="%~1" (
    For /F "skip=2 delims==, tokens=3-4,7" %%I In (
      'WMIC path Win32_LogicalDiskToPartition get Antecedent^,Dependent /format:csv'
    ) do (
      if "%%I,%%J"=="%%j,%%k" Set %~2=!%~2! %%K
)))
Exit /B
Миниатюры
Проверка на новое устройство  
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.03.2013, 03:33
Помогаю со студенческими работами здесь

Как добавить новое устройство в Apple Developer?
Здравствуйте, ситуация такая. Я создал приложение в XCODE для iphone. Получил сертификаты, создал Provisioning Profiles, в общем...

Всплывает окно, что найдено новое устройство
У меня всё время выплывает окно, что найдено новое устройство, а потом мастер установки... Не работал модем (виновата была компания связи),...

USB модем «Скайлинк» прописанный на COM3, при каждом подключении распознаётся как новое устройство
Проблема в следующем: USB модем (в моём случае это «Скайлинк») прописанный на COM3, при каждом подключении распознаётся Win7 как новое...

Проверка, подключено ли USB-устройство
Написать прогу , которая проверяет, подключено ли usb-устройство, если да, то выдаёт звуковой сигнал и добавляет к имени открытого файла ...

Как получить устройство, к которому приатачено ваше устройство в стеке устройств
Пишу минипорт драйвер для usb аудио устройства. Для создания устройства вызывается функция порт драйвера PcAddAdapterDevice, в ней...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Функция установки текстового статуса в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru