熄灭的烟 发表于 2018-1-23 19:35:53

批处理怎么查找txt文本里面的某个数字?

1.txt文本文档内容为:test=521。

请问批处理要怎么查找这个txt文本里面的test=521这行,然后判断大于500,小于530就执行ipconfig命令,条件不成立就跳开执行批处理下一行命令。

各位批处理大大帮忙看看,这个功能的批处理要怎么写。感谢!!!

nttwqz 发表于 2018-1-23 22:32:43

@echo off
pushd %~dp0
for /f "tokens=2 delims==" %%a in ('type 1.txt ^| findstr /r /i "test="') do set "num=%%a"
if %num% gtr 500 if %num% lss 530 ipconfig
pause

熄灭的烟 发表于 2018-1-23 22:52:18

nttwqz 发表于 2018-1-23 22:32
@echo off
pushd %~dp0
for /f "tokens=2 delims==" %%a in ('type 1.txt ^| findstr /r /i "test=" ...

测试OK,但如果txt文本文档里面不是test=521,而是直接就是521AA呢?

nttwqz 发表于 2018-1-23 22:56:06

熄灭的烟 发表于 2018-1-23 22:52
测试OK,但如果txt文本文档里面不是test=521,而是直接就是521AA呢?

你是自己学着玩儿??

建议看一下set命令

熄灭的烟 发表于 2018-1-23 23:28:30

nttwqz 发表于 2018-1-23 22:56
你是自己学着玩儿??

建议看一下set命令

不是学着玩,是要弄个批处理检索文件。521AA的问题我已经解决了。但是卡在521 AA,521跟AA中间有个空格我就不知道怎么弄了。N大在帮我看看怎么改可以识别空格

熄灭的烟 发表于 2018-1-23 23:29:37

nttwqz 发表于 2018-1-23 22:56
你是自己学着玩儿??

建议看一下set命令

1.txt文本文档内容为:521 AA。

请问批处理要怎么查找这个txt文本里面的521 AA这行,然后判断大于500,小于530就执行ipconfig命令,条件不成立就跳开执行批处理下一行命令。
521 AA(521跟AA中间有空格)
各位批处理大大帮忙看看,这个功能的批处理要怎么写。感谢!!!

nttwqz 发表于 2018-1-23 23:47:06

熄灭的烟 发表于 2018-1-23 23:28
不是学着玩,是要弄个批处理检索文件。521AA的问题我已经解决了。但是卡在521 AA,521跟AA中间有个空格我 ...

"tokens=1,2"
delims不要了

如果你只要前面的数字更简单
for /f %%a in (1.txt) do set numb=%%a

熄灭的烟 发表于 2018-1-24 15:05:36

本帖最后由 熄灭的烟 于 2018-1-24 15:07 编辑

nttwqz 发表于 2018-1-23 23:47
"tokens=1,2"
delims不要了




Microsoft DiskPart 版本 6.1.7601
Copyright (C) 1999-2008 Microsoft Corporation.
在计算机上: YXD--1709221625

DISKPART>
磁盘 ###状态         大小   可用   DynGpt
-----------------------------------------      
磁盘 1    联机            521 GB5120 KB         

DISKPART>



txt文本内容如上面那样的呢,我怎么检索到大小下面的521 GB,并且判断大于500,小于530.条件符合就执行ipconfig,不符合就跳空执行下一条命令。

nttwqz 发表于 2018-1-24 19:24:25

熄灭的烟 发表于 2018-1-24 15:05
Microsoft DiskPart 版本 6.1.7601
Copyright (C) 1999-2008 Microsoft Corporation.
在计算机上:...

不同的文本,处理方法也不同。

一般而言,处理文本常用的命令有:for set more type find findstr,for set findstr复杂一点,findstr还会涉及一点儿正则表达式

对于上面的文本:

for /f "tokens=3,4" %%i in ('find /i "GB" test.txt') do set "disksize=%%i %%j"

不过不要单位:

for /f "tokens=3" %%i in ('find /i "GB" test.txt') do set "disksize=%%i"

熄灭的烟 发表于 2018-1-25 17:27:27

本帖最后由 熄灭的烟 于 2018-1-25 17:29 编辑

@echo off
pushd %~dp0
for /f "tokens=3,4" %%i in ('find /i "GB" test.txt') do set "disksize=%%i %%j"
if %num% gtr 500 if %num% lss 530 ipconfig
pause



无论是for /f "tokens=3" %%i in ('find /i "GB" test.txt') do set "disksize=%%i"   还是for /f "tokens=3,4" %%i in ('find /i "GB" test.txt') do set "disksize=%%i %%j",运行后命令行窗口一闪而过,不起作用啊。

nttwqz 发表于 2018-1-25 20:25:39

熄灭的烟 发表于 2018-1-25 17:27
@echo off
pushd %~dp0
for /f "tokens=3,4" %%i in ('find /i "GB" test.txt') do set "disksize=%%i %% ...

查错了,是4,5

熄灭的烟 发表于 2018-1-26 11:08:36

nttwqz 发表于 2018-1-25 20:25
查错了,是4,5

@echo on
pushd %~dp0
for /f "tokens=4,5" %%i in ('find /i "GB" ok.txt') do set "disksize=%%i %%j"
if %num% gtr 500 if %num% lss 530 ipconfig
pause

大哥,这样也不行啊。还是运行后一闪而过。

熄灭的烟 发表于 2018-1-26 11:24:09

nttwqz 发表于 2018-1-25 20:25
查错了,是4,5

研究了下,能取到数字了。但是到了if %num% gtr 500 if %num% lss 530 ipconfig 判断这里就一闪而过了。请问这里要怎么改啊?

熄灭的烟 发表于 2018-1-26 11:41:32

nttwqz 发表于 2018-1-24 19:24
不同的文本,处理方法也不同。

一般而言,处理文本常用的命令有:for set more type find findstr,fo ...

多谢N大,已经成功搞定了。原来要把判断变量num改成disksize就可以了。

非常感谢N大,帮我解决了问题,同时又教会了我很多。{:1_184:}

moran 发表于 2018-6-3 23:30:52

熄灭的烟 发表于 2018-1-26 11:41
多谢N大,已经成功搞定了。原来要把判断变量num改成disksize就可以了。

非常感谢N大,帮我解决了问题 ...

参考你这个,写了一个判断数值最大和最小,貌似不行啊。
主要问题是最大值只要在判断值范围内,最小值不管在不在范围内,都算成功。
这个不知道应该怎么解?

熄灭的烟 发表于 2018-6-4 16:25:06

moran 发表于 2018-6-3 23:30
参考你这个,写了一个判断数值最大和最小,貌似不行啊。
主要问题是最大值只要在判断值范围内,最小值不 ...

我的判断值值要求就是这样的,只要满足一个条件就可以了。如果达到你那样的要求,可能你需要更改。
页: [1]
查看完整版本: 批处理怎么查找txt文本里面的某个数字?