2012-06-12 33 views
0

即时通讯编写批处理脚本以在闪存驱动器上运行。我需要验证代码中闪存驱动器的卷序列号,因此没有人应该能够从不同的位置运行它。检查批处理文件中的批量序列号

有谁知道如何验证批处理文件中的序列号?

例子:

IF %VOL%==ABCD GOTO A ELSE EXIT 
+1

鉴于批处理文件是纯文本,什么用来验证它有?用户可以简单地改变音量信息。 –

+0

我打算将bat文件转换成exe文件 – yrk

+1

我只是想知道_anyone_怎么能穿透这个防御堡垒。 –

回答

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! 
) 
+0

目前我使用MS dos 6.22,不幸的是这些解决方案都无法帮助我达到我的要求。请建议我找出正确语法的另一种方式,以便在MS Dos 6.22 – yrk

+0

@Aacini,+1:nice上正确执行。忘记'vol'。 –

1

你或许可以使用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" 
) 
+0

如何比较蝙蝠内部 – yrk

+0

@yrk - 将where子句更改为查看批处理正在执行的驱动器号:'where deviceid ='%〜d0''。还要确保从IF比较的右侧删除连字符。 DIR缺少序列号,WMIC不会。 – dbenham