批处理怎么查找txt文本里面的某个数字?
1.txt文本文档内容为:test=521。请问批处理要怎么查找这个txt文本里面的test=521这行,然后判断大于500,小于530就执行ipconfig命令,条件不成立就跳开执行批处理下一行命令。
各位批处理大大帮忙看看,这个功能的批处理要怎么写。感谢!!! @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 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呢? 熄灭的烟 发表于 2018-1-23 22:52
测试OK,但如果txt文本文档里面不是test=521,而是直接就是521AA呢?
你是自己学着玩儿??
建议看一下set命令 nttwqz 发表于 2018-1-23 22:56
你是自己学着玩儿??
建议看一下set命令
不是学着玩,是要弄个批处理检索文件。521AA的问题我已经解决了。但是卡在521 AA,521跟AA中间有个空格我就不知道怎么弄了。N大在帮我看看怎么改可以识别空格 nttwqz 发表于 2018-1-23 22:56
你是自己学着玩儿??
建议看一下set命令
1.txt文本文档内容为:521 AA。
请问批处理要怎么查找这个txt文本里面的521 AA这行,然后判断大于500,小于530就执行ipconfig命令,条件不成立就跳开执行批处理下一行命令。
521 AA(521跟AA中间有空格)
各位批处理大大帮忙看看,这个功能的批处理要怎么写。感谢!!! 熄灭的烟 发表于 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: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,不符合就跳空执行下一条命令。 熄灭的烟 发表于 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: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",运行后命令行窗口一闪而过,不起作用啊。 熄灭的烟 发表于 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 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
大哥,这样也不行啊。还是运行后一闪而过。 nttwqz 发表于 2018-1-25 20:25
查错了,是4,5
研究了下,能取到数字了。但是到了if %num% gtr 500 if %num% lss 530 ipconfig 判断这里就一闪而过了。请问这里要怎么改啊? nttwqz 发表于 2018-1-24 19:24
不同的文本,处理方法也不同。
一般而言,处理文本常用的命令有:for set more type find findstr,fo ...
多谢N大,已经成功搞定了。原来要把判断变量num改成disksize就可以了。
非常感谢N大,帮我解决了问题,同时又教会了我很多。{:1_184:} 熄灭的烟 发表于 2018-1-26 11:41
多谢N大,已经成功搞定了。原来要把判断变量num改成disksize就可以了。
非常感谢N大,帮我解决了问题 ...
参考你这个,写了一个判断数值最大和最小,貌似不行啊。
主要问题是最大值只要在判断值范围内,最小值不管在不在范围内,都算成功。
这个不知道应该怎么解? moran 发表于 2018-6-3 23:30
参考你这个,写了一个判断数值最大和最小,貌似不行啊。
主要问题是最大值只要在判断值范围内,最小值不 ...
我的判断值值要求就是这样的,只要满足一个条件就可以了。如果达到你那样的要求,可能你需要更改。
页:
[1]