PDA

Показать полную графическую версию : Батник проверяющий S/N(серийник) HDD или Flash


ofcoss
18-07-2009, 09:01
Возможно ли что бы батник сверял сернийик флешки и если он правильный то выполнение пойдет дальше если он не правильный то выход????

jentoso
18-07-2009, 10:14
ofcoss, что то подобное было где то на форуме. Надо только поискать.

Maza Faka
18-07-2009, 11:08
ofcoss
Пример:

@Echo Off

Set nDrive=G:
Set nSerialRight=1234-5678
Set nSerialNew=

For /F "Skip=1 Tokens=2 Delims=:" %%A In ('Vol %nDrive%') Do Set nSerialNew=%%A
Set nSerialNew=%nSerialNew: =%

::Echo %nSerialNew%

If /I Not %nSerialRight%==%nSerialNew% GoTo :EOF

ofcoss
18-07-2009, 19:21
т.е. я вписываю в Set nSerialRight свой серийник и он должен запуститься?

и как посмотреть серийник флешки чет я его так и не нашел даж everest не видит

ofcoss
18-07-2009, 20:29
вписываю в Set nSerialRight серийник, в итоге ошибка

jentoso
18-07-2009, 22:13
вписываю в Set nSerialRight серийник, в итоге ошибка »
В каком формате вписываешь серийник и в какой среде запускаешь. Возможно это определяющие факторы.

ofcoss
18-07-2009, 22:32
Set nSerialRight=PLLX7IQL Windows vista

Set nSerialRight=PLLX-7IQL то же не работает

запускаю с флехи,полный код

for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%i:\marker.fle set inst_flash=%%i:

Set nDrive=inst_flash:
Set nSerialRight=PLLX7IQL
Set nSerialNew=

For /F "Skip=1 Tokens=2 Delims=:" %%A In ('Vol %nDrive%') Do Set nSerialNew=%%A
Set nSerialNew=%nSerialNew: =%

::Echo %nSerialNew%

If /I Not %nSerialRight%==%nSerialNew% GoTo :EOF

gora
19-07-2009, 09:39
Set nDrive=inst_flash:
Set nSerialRight=PLLX7IQL»
Должно быть:Set nDrive=%inst_flash%
Set nSerialRight=PLLX-7IQL

PS
ofcoss, заключайте строки кода в теги [Code], значок # сверху панели "Быстрого ответа".

amel27
20-07-2009, 07:45
ofcoss,
в предложенных вариантах используется SN тома, а не диска, поэтому нужно иметь ввиду:

- после форматирования SN тома изменится;
- SN тома можно задать/изменить при помощи утилит типа VolumeID

ofcoss
21-07-2009, 16:59
А возможнали проверка именно по с.номеру????

NiOl
21-07-2009, 18:13
А возможнали проверка именно по с.номеру???? »

При смене версии и языка Винды формат сообщения команды VOL изменится и скрипт работать правильно не будет!

под рускоязычной XP "прокатывает" следующее:
for /F "skip=1 tokens=4" %%S in ('vol C:') do echo %%S
но лучше чуть-чуть подстраховаться и использовать так:
@echo off
for /F "skip=1 tokens=*" %%S in ('vol C:') do set T=%%S
:loop
for /F "tokens=1*" %%S in ("%T%") do (
set T=%%T
set SN=%%S
)
if not "%T%"=="" goto loop

echo %SN%

amel27
22-07-2009, 16:05
А возможнали проверка именно по с.номеру?»
AFAIK только для ATA/SCSI. Например, есть CMD-утилита DiskId32 (http://www.winsim.com/diskid32/diskid32.html).

NiOl
22-07-2009, 18:39
Set nSerialRight=PLLX7IQL Windows vista
Set nSerialRight=PLLX-7IQL то же не работает »

Сразу не заметил - такого ID у логического диска быть не может. У метки диска - пожалуйста. А "серийник" - это 4 байта, выводимые в 16-ричном виде, т.е. "Volume Serial Number" может состоять только из набора цифр и символов от A до F.
* если набрать просто команду DIR, то в верхней строке видна Метка логического диска (обычно текст до 11 символов), а во второй - серийный номер.




© OSzone.net 2001-2012