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

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

@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:03 编辑

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

TOP

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

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

TOP

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

发表错误 内容删除
目的,学习批处理

TOP

本帖最后由 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

TOP

以楼上memory 行为例,  %ram%是先以冒号为分隔得到 4096MB RAM
再次以  %ram:~1,-4% 来取值 ,在4096MB RAM中来计数 1 是4 ,-4是空格,取这中间的数值,即 4096MB空格,
ip的-5位是要保留的数据
目的,学习批处理

TOP

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

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

提问前请先用 help command 查看命令帮助,谢谢。
(例如:help for)

TOP

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

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



    +1,变量截取看    Help Set

TOP

http://bbs.bathome.net/thread-2189-1-1.html
http://bbs.bathome.net/thread-31727-1-1.html
建议阅读for命令和set命令教程,系统自带的帮助文档不好。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 6# hlzj88


    谢谢

TOP

返回列表