Проверить серийный номер тома в файле bat

Я пишу пакетный скрипт для запуска на флешке. Мне нужно проверить серийный номер тома флеш-накопителя внутри кода, поэтому никто не сможет запустить его из другого места.

Кто-нибудь знает, как проверить серийный номер внутри командного файла?

Пример:

IF %VOL%==ABCD GOTO A ELSE EXIT

person yrk    schedule 12.06.2012    source источник
comment
Учитывая, что командные файлы представляют собой открытый текст, какой смысл в их проверке? Пользователь мог просто изменить информацию об объеме.   -  person Jeff Watkins    schedule 12.06.2012
comment
Я планирую преобразовать файл bat в exe   -  person yrk    schedule 12.06.2012
comment
Мне просто интересно, как мог кто-нибудь проникнуть в эту оборонительную крепость.   -  person Eitan T    schedule 13.06.2012


Ответы (2)


Хотя есть несколько разных способов добиться того же, исходная команда DOS / Windows, предназначенная для управления томами и серийными номерами, VOL:

@echo off
for /F "skip=1 tokens=5" %%a in ('vol %~D0') do set Serial=%%a
if %Serial% equ ABCD-EF01 do (
    echo Valid serial number!
)
person Aacini    schedule 13.06.2012
comment
в настоящее время я использую MS dos 6.22, к сожалению, все эти решения не помогли мне выполнить мои требования. пожалуйста, посоветуйте мне найти другой способ с правильным синтаксисом для правильного выполнения в MS Dos 6.22 - person yrk; 13.06.2012
comment
@Aacini, +1: хорошо. Забыл про vol. - person Eitan T; 13.06.2012

Вероятно, вы можете использовать WMIC и сделать что-то вроде:

wmic logicaldisk where drivetype=3 get volumeserialnumber

См. Типы параметров в указанной ссылке.

Редактировать:

@echo off
for /F "skip=1 delims=" %%j in ("wmic logicaldisk where deviceid = 'C:' get volumeserialnumber") do (
  set SERIAL=%%j
  goto :DONE
)
:DONE
echo  SERIAL=%SERIAL%

if "%SERIAL%"=="BLAH" (
   echo "Bluh"
)
person David Brabant    schedule 12.06.2012
comment
@yrk - Измените предложение where, чтобы посмотреть букву диска, с которого выполняется пакет: where deviceid = '%~d0'. Также не забудьте удалить дефис с правой стороны сравнения IF. DIR переносит серийный номер через дефис, WMIC - нет. - person dbenham; 12.06.2012