找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 37784|回复: 14

[文件操作] [已解决]批处理获取硬盘序列号求解

[复制链接]
发表于 2020-3-17 12:54:30 | 显示全部楼层 |阅读模式
本帖最后由 testest 于 2020-5-13 21:37 编辑

网络上查了下,用bat获取硬盘序列号
1
  1. wmic diskdrive get serialnumber
复制代码
此命令,无法在XP系统执行,且在win7执行结果是
V6NM3V55
,和用AIDA64查的结果不一样,放弃
2
  1. wmic path Win32_PhysicalMedia get SerialNumber
复制代码
此命令,可以在XP系统执行,也可以在win7执行结果是
6VMNV355
,和用AIDA64查的结果一样

现在,我想用bat只显示第二条的值,并且赋值给一个变量,各位达人这要怎么写
发表于 2020-3-17 13:44:23 | 显示全部楼层
  1. @echo off

  2. call:get_ID
  3. echo %ID%
  4. goto:eof

  5. :get_ID
  6.     for /F "skip=1" %%i in ('wmic path Win32_PhysicalMedia get SerialNumber') do (
  7.         set ID=%%i
  8.         goto:eof
  9.     )
  10. goto:eof
复制代码
因为实际上它显示的是三行,而且bat好像禁用了break,所以只好使用 goto:eof 来中断。
当需要获取磁盘序列号的时候 call:get_ID ,返回值储存在 ID 中。
 楼主| 发表于 2020-3-17 15:14:25 | 显示全部楼层
不知道为啥我这边加入查询别的代码时,会闪退,我再想想
谢谢了!
 楼主| 发表于 2020-5-12 00:16:11 | 显示全部楼层
回复 2# wujunkai
又碰到问题了,这个方法只能得到第一块硬盘的序列号,多硬盘咋怎?
发表于 2020-5-12 06:43:15 | 显示全部楼层
回复 4# testest


    多硬盘的话,你那条查询语句的结果是什么?
我没有多硬盘,不知道具体情况
发表于 2020-5-12 08:32:00 | 显示全部楼层
Disk_ID_序号
我是一块固态,一块机械
  1. @echo off
  2. set "index=0"
  3. for /f "skip=1 delims=" %%a in ('wmic path Win32_PhysicalMedia get SerialNumber') do (
  4.         set /a "index+=1"
  5.         call set "Disk_ID_%%index%%=%%a"
  6. )
  7. set Disk_ID_
  8. pause&exit
复制代码
发表于 2020-5-12 08:48:57 | 显示全部楼层
感觉还是第三方工具grep容易筛选字符串
发表于 2020-5-12 09:42:49 | 显示全部楼层
回复 4# testest


找一台多块硬盘的电脑
打开一个CMD窗口
执行命令:
wmic path Win32_PhysicalMedia get SerialNumber /value
把结果发出来看一下
 楼主| 发表于 2020-5-12 11:02:42 | 显示全部楼层
回复 5# wujunkai


  只能查询到第一块硬盘信息,如果没有多块硬盘,可以插U盘也可以测试
 楼主| 发表于 2020-5-12 11:09:21 | 显示全部楼层
回复 8# Batcher
  1. C:\Users\Administrator>wmic path Win32_PhysicalMedia get SerialNumber /value


  2. SerialNumber=            6VMNV355


  3. SerialNumber=4C530000211222118175


  4. SerialNumber=
复制代码
老大也来了,其中4C530000211222118175为U盘的序列号
我再多说一个很奇怪的想象,今天在另外一台XP系统,执行上面的命令,显示的结果是
  1. SerialNumber=
复制代码
,没有看到任何信息,如果说是因为这个硬盘没有序列号,也不可能啊,我用AIDA64可以看到
 楼主| 发表于 2020-5-12 11:10:58 | 显示全部楼层
回复 6# went
这个都会多一条空白结果,可否去除呢
发表于 2020-5-12 12:13:26 | 显示全部楼层
回复 11# testest


有的磁盘没有序列号
你要是不需要空白序列号,可以改成
  1. "eol= skip=1 delims="
复制代码
 楼主| 发表于 2020-5-13 00:22:14 | 显示全部楼层
回复 12# went
如何直接把序列号的值赋给变量呢,即不要前面的Disk_ID_
发表于 2020-5-13 10:12:50 | 显示全部楼层
回复 13# testest

已经赋给变量了
变量名Disk_ID_1,Disk_ID_2
取值用%Disk_ID_1%,%Disk_ID_2%
 楼主| 发表于 2020-5-13 21:37:15 | 显示全部楼层
很好,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 19:25 , Processed in 0.016170 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表