问题描述
我有一个奇怪的问题。我试图从WMIC返回硬盘序列号在批处理文件中的变量;这给了我该变量的行是:
FOR / F跳过= 2令牌= 2 delims =%%一个在('WMIC diskdrive获取SERIALNUMBER /格式:CSV')做(设置硬盘= %%一)
这是什么赋予WMIC认为作为硬盘驱动器到一个变量的序列号,问题是,它返回的序列号是稍微偏离。在一个实例返回:
3ZVT01H4
但是标签上的序列号是:
Z3TV104H
这好像是在实际的序列号和每两个字符倒车;我在打字错,还是这是一个已知的(但不是任何地方记录)问题?
有没有办法,我可以把变量,它分成两个字符块,扭转所有这些字符的顺序,然后它放入一个变量的方法吗?
的 - 这好像是在实际的序列号和每两个字符倒车;我在打字错,还是这是一个已知的(但不是任何地方记录)问题?的
最好的我可以计算,它的显然是错误。我的角色是通过对逆转为好,它不局限于WMIC。同样的结果,如果我 SELECT的SerialNumber FROM Win32_DiskDrive
从 winmgmts:\\\\本地主机\\ ROOT \\ CIMV2
在WSH
的 - 有没有办法,我可以把变量,它分成两个字符块,扭转所有这些字符的顺序,然后将其写入变量的方法的
?如果你已经安装了PowerShell,你可以做到这一点<一个href=\"http://www.powershelladmin.com/wiki/Powershell_regular_ex$p$pssions#Example_-_The_-replace_Operator\"相对=nofollow>正则表达式替换。下面是调用PowerShell命令来演示批处理脚本:
关闭@echo
SETLOCALFOR / F令牌= *%%我在('WMIC diskdrive GET SERIALNUMBER ^ | FINDSTR[0-9]')做( 回声逆转:%%我 FOR / F令牌= *%%倍In('PowerShell的-command'%%我-replace'()(),$ 2 $ 1'')做(
设置串行= %% X
)
)回声纠正:%串口%GOTO:EOF
我想这有资格作为一个。
Actually, if you just want to see the serial without setting a variable, you can do this with a PowerShell one-liner:
powershell "gwmi win32_diskdrive | %{ $_.serialnumber -replace '(.)(.)','$2$1' }"
这篇关于WMIC返回奇数序号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!