【问题标题】:Check volume serial number within a bat file检查 bat 文件中的卷序列号
【发布时间】:2012-06-15 03:04:53
【问题描述】:

我正在编写一个在闪存驱动器上运行的批处理脚本。我需要在代码中验证闪存驱动器的卷序列号,因此应该没有人能够从不同的位置运行它。

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

例子:

IF %VOL%==ABCD GOTO A ELSE EXIT

【问题讨论】:

  • 鉴于批处理文件是明文,验证它有什么用?用户可以简单地改变音量信息。
  • 我打算将bat文件转换成exe文件
  • 我只是想知道任何人怎么能突破这个防御堡垒。

标签: batch-file serial-number


【解决方案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"
)

【讨论】:

  • @yrk - 更改 where 子句以查看执行批处理的驱动器号:where deviceid = '%~d0'。还要确保从 IF 比较的右侧删除连字符。 DIR 连字符序列号,WMIC 没有。
【解决方案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!
)

【讨论】:

  • 目前我正在使用 MS dos 6.22 ,不幸的是,这些所有解决方案都无法帮助我达到我的要求。请建议我找出另一种正确语法的方法,以便在 MS Dos 6.22 上正确执行
  • @Aacini,+1:很好。忘了vol
猜你喜欢
  • 1970-01-01
  • 2013-10-31
  • 2020-05-02
  • 1970-01-01
  • 2021-11-20
  • 1970-01-01
  • 2011-06-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多