Board logo

标题: [文本处理] 获取系统信息的批处理红色标记部分的不懂,求解释,谢谢 [打印本页]

作者: 5986975    时间: 2017-7-8 17:12     标题: 获取系统信息的批处理红色标记部分的不懂,求解释,谢谢

@echo off
@for /f "tokens=2 delims=:" %%i in ('ipconfig /all^|findstr "IPv4"') do (set ipaddress=%%i)
@for /f "tokens=1 delims=\" %%i in ('getmac^|findstr "Device"') do (set mac=%%i)
@if %PROCESSOR_ARCHITECTURE%=="x86" (start /wait dxdiag /whqlff /t DxDiag.txt) else (start /wait dxdiag /64bit /whql:off /t DxDiag.txt)
@for /f "tokens=2 delims=:" %%i in ('type "DxDiag.txt"^|findstr /s /i /c:"System Model"') do (set pc=%%i)
@for /f "tokens=2 delims=:" %%i in ('type "DxDiag.txt"^|findstr /s /i /c:"Operating System"') do (set system=%%i)
@for /f "tokens=2 delims=:" %%i in ('type "DxDiag.txt"^|findstr /s /i /c:"             Memory"') do (set ram=%%i)

@echo 计算机型号:  %pc:~1,30%>>"%seat%-%computername%-PC.txt"
@echo   计算机名: %computername%>>"%seat%-%computername%-PC.txt"
@echo     IP地址:  %ipaddress:~1,-5%>>"%seat%-%computername%-PC.txt"
@echo   物理地址:  %mac:~0,-3%>>"%seat%-%computername%-PC.txt"
@echo   操作系统:  %system:~1,13%>>"%seat%-%computername%-PC.txt"
@echo   系统位数:  %PROCESSOR_ARCHITECTURE%>>"%seat%-%computername%-PC.txt"
@echo       内存:  %ram:~1,-4%>>"%seat%-%computername%-PC.txt"
作者: hlzj88    时间: 2017-7-8 19:00

本帖最后由 hlzj88 于 2017-7-8 19:03 编辑

大神的不是,,可能上论坛的老菜鸟少,我就给你解释下
tokens=2 delims=:   以冒号为分隔,来提取第2列数据
for  一个循环,遍历所有,从头到尾,
第一句  findstr 从ipconfig /all 命令结果里找到有字符ipv4的行,以冒号为分隔,来取他的第二列数据,并把数据定义为IPaddress这个变量,这个变量在下面echo时取这个变量的第1位直到倒数第5位的数据  和 ip地址:  这几个汉字共同写入一个包含电脑名字的txt里,在txt里,这行文字反馈的信息是 电脑的IP地址。
我想解释的应该到位,其他的语句依上面的解释来理解就可以。
作者: a2002    时间: 2017-7-8 22:46

本帖最后由 a2002 于 2017-7-8 22:47 编辑

第一句  findstr 从ipconfig /all 命令结果里找到有字符ipv4的行,以冒号为分隔,来取他的第二列数据,并把数据定义为IPaddress这个变量,这个变量在下面echo时取这个变量的第1位直到倒数第5位的数据  和 ip地址:  这几个汉字共同写入一个包含电脑名字的txt里,在txt里,这行文字反馈的信息是 电脑的IP地址。
红色地方不懂,呵呵
作者: hlzj88    时间: 2017-7-8 23:36

本帖最后由 hlzj88 于 2017-7-8 23:38 编辑

发表错误 内容删除
作者: 5986975    时间: 2017-7-9 08:20

本帖最后由 5986975 于 2017-7-9 08:21 编辑
大神的不是,,可能上论坛的老菜鸟少,我就给你解释下
tokens=2 delims=:   以冒号为分隔,来提取第2列数据 ...
hlzj88 发表于 2017-7-8 19:00



   
第一句  findstr 从ipconfig /all 命令结果里找到有字符ipv4的行,以冒号为分隔,来取他的第二列数据,并把 ...
a2002 发表于 2017-7-8 22:46


谢谢各位,前面基本明白了,delims=是起分割作用,tokens=是提选择第几列

echo时,位数是怎么算呢?怎么想都不对?
比如 IPv4行倒数第5位选首(6
Memory行倒数第4位:MAR_
MAC行倒数第3位:___

   IPv4 地址 . . . . . . . . . . . . : 10.*.*.26(首选)
             Memory: 4096MB RAM
00-23-42-73-8B-BD   \Device\Tcpip_{E292A3C8-1A76-4B09-9
作者: hlzj88    时间: 2017-7-9 11:03

以楼上memory 行为例,  %ram%是先以冒号为分隔得到 4096MB RAM
再次以  %ram:~1,-4% 来取值 ,在4096MB RAM中来计数 1 是4 ,-4是空格,取这中间的数值,即 4096MB空格,
ip的-5位是要保留的数据
作者: 523066680    时间: 2017-7-9 11:11

本帖最后由 523066680 于 2017-7-9 11:19 编辑

这个世界就是这样的,可以去查的绝对不去查,就让那些热心人来慷慨解答吧~
—— 人们的热情真是廉价。

提问前请先用 help command 查看命令帮助,谢谢。
(例如:help for)
作者: 老刘1号    时间: 2017-7-9 14:20

这个世界就是这样的,可以去查的绝对不去查,就让那些热心人来慷慨解答吧~
—— 人们的热情真是廉价。

...
523066680 发表于 2017-7-9 11:11



    +1,变量截取看    Help Set
作者: Batcher    时间: 2017-7-9 16:36

http://bbs.bathome.net/thread-2189-1-1.html
http://bbs.bathome.net/thread-31727-1-1.html
建议阅读for命令和set命令教程,系统自带的帮助文档不好。
作者: 5986975    时间: 2017-7-10 20:48

回复 6# hlzj88


    谢谢




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2