小朋友丶 发表于 2021-2-26 22:20

对比文本每行前段数据,相同取后面内容

8C-16-45-68-9B-A1 1700001-PC
8C-16-45-68-9B-A2 1700002-PC
8C-16-45-68-9B-A3 1700003-PC
8C-16-45-68-9B-A4 1700004-PC
8C-16-45-68-9B-A5 1700005-PC

取本机物理地址,然后对比列表内容,对比成功后取空格后内容。

求源码

邪恶海盗 发表于 2021-2-26 22:36

本帖最后由 邪恶海盗 于 2021-2-26 22:37 编辑

列表在哪,格式?

你这个是MAC地址吧,还有一个问题就是多网卡怎么处理?

Xingyemao 发表于 2021-2-26 22:39

小白一个,刚刚开始学python,不懂怎么取本机物理地址,但是但看文本,这是一个很有规律的内容,不是可以使用正则进行匹配吗?或者是以空格为切分,建立字典,K 为空格前内容,V为空格后内容。如果得到的地址符合字典的K,即输出V。不知道思路对不对

b0y 发表于 2021-2-26 22:53

小朋友丶 发表于 2021-2-26 22:54

邪恶海盗 发表于 2021-2-26 22:36
列表在哪,格式?

你这个是MAC地址吧,还有一个问题就是多网卡怎么处理?

是MAC地址,我想做一个根据MAC地址取计算机名的脚本,这样计算机名就可以固定了呀。

小朋友丶 发表于 2021-2-26 23:00

Xingyemao 发表于 2021-2-26 22:39
小白一个,刚刚开始学python,不懂怎么取本机物理地址,但是但看文本,这是一个很有规律的内容,不是可以使 ...

我也是小白,我觉得你的思路不错,但是如何做你说的这个字典呢?

小朋友丶 发表于 2021-2-26 23:39

b0y 发表于 2021-2-26 22:53


谢谢大佬!

但是有的地方我不太懂,
a代表的是对比成功的数据在第几个字节吗?
b代表什么?
m+“”代表MAC地址后面还有数据?

3131210 发表于 2021-2-27 06:06

批处理



@echo off
for /f "delims= " %%a in ('getmac ^| find /i "-"') do (
    for /f "delims=:" %%i in ('findstr /n /b /e ::::.*:::: "%~f0"') do (
      for /f "tokens=1,2" %%i in ('more /e +%%i "%~f0" ^| find /i "%%a"') do (
            echo. & echo NAME=%%j & echo MAC=%%i
      )
    )
)

echo.
pause
exit

:::: Your MAC And NAME Here ::::
8C-16-45-68-9B-A1 1700001-PC
8C-16-45-68-9B-A2 1700002-PC
8C-16-45-68-9B-A3 1700003-PC
8C-16-45-68-9B-A4 1700004-PC
8C-16-45-68-9B-A5 1700005-PC
00-FF-70-65-D0-D8 test-pc

b0y 发表于 2021-2-27 09:53

小朋友丶 发表于 2021-2-26 23:39
谢谢大佬!

但是有的地方我不太懂,


m+" "是文本中MAC地址后面有个空格 不加也可以的 只是为了提高精度 但是这里不需要 因为不会出现要寻找的文本被包含在某一行里的情况. a是寻找到的文本开始位置,b是寻找到的那一行 最后的位置. b-a就是要取出的长度

Xingyemao 发表于 2021-2-27 10:48

小朋友丶 发表于 2021-2-26 23:00
我也是小白,我觉得你的思路不错,但是如何做你说的这个字典呢?

大佬们的回复太厉害了,学到了不少。我想做的字典,就是按行读取内容,空格分开每一行,就可以把每一行的前后分别赋值被K、V了。有了这个字典,应该可以通过判断本机物理地址在不在字典的K里面
页: [1] 2
查看完整版本: 对比文本每行前段数据,相同取后面内容