标题: [文本处理] 批处理for无法正常提取 wmic CPU get ProcessorID返回结果里的指定内容 [打印本页]
作者: 236598515 时间: 2014-1-20 11:32 标题: 批处理for无法正常提取 wmic CPU get ProcessorID返回结果里的指定内容
本帖最后由 pcl_test 于 2017-4-29 08:55 编辑
我的需求是获取电脑的cpuid进行绑定。网上一大片灌水。最后找到
wmic CPU get ProcessorID >zzkjdq.txt
这个可以生成cpuid的txt文件。没有问题。
但是我需要进行二次操作获取这个txt文件里面的cpuid的时候就出现问题了
(for /f "tokens=*" %%i in (zzkjbj.txt) do (
set s1=%%i
for /f "tokens=* delims= )" %%j in ('echo !s!') do echo %%j^)))
循环无效。经过多方面排查可能是编码问题。
现在的问题就是
一、有没有直接获取本机cpuid进行二次操作的方法?
二、我怎么样才能使用这个生成的txt文件 。在线等。吃饭等。睡觉等。
求高手、大牛、大神、各位版本解决
新手谢谢了
作者: 236598515 时间: 2014-1-20 11:44
各位大牛们。认为这个没法弄的也给我说一声哈,我好换个方式。谢谢各位来分享下思路
作者: 236598515 时间: 2014-1-20 12:01
我在自己解决这个问题的时候。我使用了
(for /f "tokens=*" %%i in ('wmic CPU get ProcessorID') do (
set s1=%%i
for /f "tokens=* delims= )" %%j in ('echo !s!') do echo %%j^)))
pause
还有wmic CPU get ProcessorID>zzkjbj.htm
经过查看都有3行
ProcessorId
178BFBFF00610F01
最后多了一行应该是特殊字符
我能否只获取到第二行数据呢。最后那个特殊字符不能用if判断。太坑爹了。
作者: xxpinqz 时间: 2014-1-20 12:20
- wmic CPU get ProcessorID /value
复制代码
这样好处理吧
作者: 236598515 时间: 2014-1-20 12:30
这样好处理吧
xxpinqz 发表于 2014-1-20 12:20
这样处理貌似不行。 还是不能进入循环获取里面的变量。 你能使用变量来获取这个cpuid吗
作者: DAIC 时间: 2014-1-20 12:32
XP还是Win7?- wmic CPU get ProcessorID /value > a.txt
复制代码
把a.txt压缩一下传上来看看
作者: 236598515 时间: 2014-1-20 13:11
求大神 解决下。。
(for /f "tokens=*" %%i in ('wmic CPU get ProcessorID') do (
set s1=%%i
for /f "tokens=* delims= )" %%j in ('echo !s!') do echo %%j^)))
pause
还有wmic CPU get ProcessorID>zzkjbj.htm
经过查看都有3行
ProcessorId
178BFBFF00610F01
最后多了一行应该是特殊字符
我想只获取第二行怎么办
作者: DAIC 时间: 2014-1-20 13:34
- @echo off
- for /f "tokens=2 delims==" %%i in ('wmic CPU get ProcessorID /value ^| findstr "ProcessorId"') do (
- set str=%%i
- )
- echo %str%
- pause
复制代码
作者: 236598515 时间: 2014-1-20 14:13
楼上正解。
作者: cc5511 时间: 2020-8-27 09:44
本帖最后由 cc5511 于 2020-8-28 20:53 编辑
回复 8# DAIC
你好,你这个测试了正确的;
不过echo %str%后面加文字的话(比如:echo %str%你好),变量后面的文字就会显示错位,这个变量也不算是一个“健康正常”的变量,请问要怎么处理呢? 我被这个类似问题困扰了。。。
以上是前几天遇到的问题,现在找到办法了。。知道怎么解决了。。。是因为wmic命令的结果末尾会有“隐形的类似【换行】或【TAB】的显示”,需要用(for、call、echo)三个命令配合过滤一下。以8楼的代码再做一下改进。- @echo off
- for /f "tokens=2 delims==" %%i in ('wmic CPU get ProcessorID /value ^| findstr "ProcessorId"') do (
- set str=%%i
- )
-
- ::增加下面这行来过滤wmic命令结果末尾的“换行”。
- for /f "delims=" %%a in ('call echo %str%') do set str=%%a
-
- echo %str%
- pause
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |