本文介绍了WMIC返回奇数序号的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个奇怪的问题。我试图从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返回奇数序号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-14 09:47