无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 7697|回复: 15
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
1#
发表于 2018-1-23 19:35:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1.txt文本文档内容为:test=521。

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

各位批处理大大帮忙看看,这个功能的批处理要怎么写。感谢!!!
2#
发表于 2018-1-23 22:32:43 | 只看该作者
@echo off
pushd %~dp0
for /f "tokens=2 delims==" %%a in ('type 1.txt ^| findstr /r /i "test=[0-9]"') do set "num=%%a"
if %num% gtr 500 if %num% lss 530 ipconfig
pause

点评

测试OK,但如果txt文本文档里面不是test=521,而是直接就是521AA呢?  详情 回复 发表于 2018-1-23 22:52
提示此处不应有500  详情 回复 发表于 2018-1-23 22:44
回复

使用道具 举报

3#
 楼主| 发表于 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=[0-9]" ...

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

点评

你是自己学着玩儿?? 建议看一下set命令  详情 回复 发表于 2018-1-23 22:56
回复

使用道具 举报

4#
发表于 2018-1-23 22:56:06 | 只看该作者
熄灭的烟 发表于 2018-1-23 22:52
测试OK,但如果txt文本文档里面不是test=521,而是直接就是521AA呢?

你是自己学着玩儿??

建议看一下set命令

点评

1.txt文本文档内容为:521 AA。 请问批处理要怎么查找这个txt文本里面的521 AA这行,然后判断大于500,小于530就执行ipconfig命令,条件不成立就跳开执行批处理下一行命令。 521 AA(521跟AA中间有空格) 各位  详情 回复 发表于 2018-1-23 23:29
不是学着玩,是要弄个批处理检索文件。521AA的问题我已经解决了。但是卡在521 AA,521跟AA中间有个空格我就不知道怎么弄了。N大在帮我看看怎么改可以识别空格  详情 回复 发表于 2018-1-23 23:28
回复

使用道具 举报

5#
 楼主| 发表于 2018-1-23 23:28:30 | 只看该作者
nttwqz 发表于 2018-1-23 22:56
你是自己学着玩儿??

建议看一下set命令

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

点评

"tokens=1,2" delims不要了 如果你只要前面的数字更简单 for /f %%a in (1.txt) do set numb=%%a  详情 回复 发表于 2018-1-23 23:47
回复

使用道具 举报

6#
 楼主| 发表于 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中间有空格)
各位批处理大大帮忙看看,这个功能的批处理要怎么写。感谢!!!
回复

使用道具 举报

7#
发表于 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

点评

Microsoft DiskPart 版本 6.1.7601 Copyright (C) 1999-2008 Microsoft Corporation. 在计算机上: YXD--1709221625 DISKPART> 磁盘 ### 状态 大小 可用 Dyn Gpt -------- ------  详情 回复 发表于 2018-1-24 15:05
回复

使用道具 举报

8#
 楼主| 发表于 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>
  磁盘 ###  状态           大小     可用     Dyn  Gpt
  --------  -------------  -------  -------  ---  ---        
  磁盘 1    联机              521 GB  5120 KB         

DISKPART>



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

点评

不同的文本,处理方法也不同。 一般而言,处理文本常用的命令有:for set more type find findstr,for set findstr复杂一点,findstr还会涉及一点儿正则表达式 对于上面的文本: for /f "tokens=3,4" %%i  详情 回复 发表于 2018-1-24 19:24
回复

使用道具 举报

9#
发表于 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"

点评

多谢N大,已经成功搞定了。原来要把判断变量num改成disksize就可以了。 非常感谢N大,帮我解决了问题,同时又教会了我很多。  详情 回复 发表于 2018-1-26 11:41
回复

使用道具 举报

10#
 楼主| 发表于 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",运行后命令行窗口一闪而过,不起作用啊。

点评

查错了,是4,5  详情 回复 发表于 2018-1-25 20:25
回复

使用道具 举报

11#
发表于 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

点评

研究了下,能取到数字了。但是到了if %num% gtr 500 if %num% lss 530 ipconfig 判断这里就一闪而过了。请问这里要怎么改啊?  详情 回复 发表于 2018-1-26 11:24
@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:08
回复

使用道具 举报

12#
 楼主| 发表于 2018-1-26 11:08:36 | 只看该作者

@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

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

使用道具 举报

13#
 楼主| 发表于 2018-1-26 11:24:09 | 只看该作者

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

使用道具 举报

14#
 楼主| 发表于 2018-1-26 11:41:32 | 只看该作者
nttwqz 发表于 2018-1-24 19:24
不同的文本,处理方法也不同。

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

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

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

点评

参考你这个,写了一个判断数值最大和最小,貌似不行啊。 主要问题是最大值只要在判断值范围内,最小值不管在不在范围内,都算成功。 这个不知道应该怎么解?  详情 回复 发表于 2018-6-3 23:30
回复

使用道具 举报

15#
发表于 2018-6-3 23:30:52 | 只看该作者
熄灭的烟 发表于 2018-1-26 11:41
多谢N大,已经成功搞定了。原来要把判断变量num改成disksize就可以了。

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

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

点评

我的判断值值要求就是这样的,只要满足一个条件就可以了。如果达到你那样的要求,可能你需要更改。  详情 回复 发表于 2018-6-4 16:25
回复

使用道具 举报

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

我的判断值值要求就是这样的,只要满足一个条件就可以了。如果达到你那样的要求,可能你需要更改。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-4-19 22:47

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表