[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理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文件 。在线等。吃饭等。睡觉等。
求高手、大牛、大神、各位版本解决
新手谢谢了

各位大牛们。认为这个没法弄的也给我说一声哈,我好换个方式。谢谢各位来分享下思路

TOP

我在自己解决这个问题的时候。我使用了  
(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判断。太坑爹了。

TOP

  1. wmic CPU get ProcessorID /value
复制代码
这样好处理吧
初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

这样好处理吧
xxpinqz 发表于 2014-1-20 12:20

这样处理貌似不行。 还是不能进入循环获取里面的变量。 你能使用变量来获取这个cpuid吗

TOP

XP还是Win7?
  1. wmic CPU get ProcessorID /value > a.txt
复制代码
把a.txt压缩一下传上来看看
1

评分人数

TOP

求大神 解决下。。
(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  

最后多了一行应该是特殊字符
我想只获取第二行怎么办

TOP

  1. @echo off
  2. for /f "tokens=2 delims==" %%i in ('wmic CPU get ProcessorID /value ^| findstr "ProcessorId"') do (
  3.     set str=%%i
  4. )
  5. echo %str%
  6. pause
复制代码
1

评分人数

TOP

楼上正解。

TOP

本帖最后由 cc5511 于 2020-8-28 20:53 编辑

回复 8# DAIC


    你好,你这个测试了正确的;
    不过echo %str%后面加文字的话(比如:echo %str%你好),变量后面的文字就会显示错位,这个变量也不算是一个“健康正常”的变量,请问要怎么处理呢? 我被这个类似问题困扰了。。。

以上是前几天遇到的问题,现在找到办法了。。知道怎么解决了。。。是因为wmic命令的结果末尾会有“隐形的类似【换行】或【TAB】的显示”,需要用(for、call、echo)三个命令配合过滤一下。以8楼的代码再做一下改进。
  1. @echo off
  2. for /f "tokens=2 delims==" %%i in ('wmic CPU get ProcessorID /value ^| findstr "ProcessorId"') do (
  3.     set str=%%i
  4. )
  5. ::增加下面这行来过滤wmic命令结果末尾的“换行”。
  6. for /f "delims=" %%a in ('call echo %str%') do set str=%%a
  7. echo %str%
  8. pause
复制代码

TOP

返回列表