![Board logo](images/default/logo.gif)
标题: [文本处理] [已解决]批处理如何根据指定条件提取回显中的内容? [打印本页]
作者: chouxia 时间: 2016-1-5 10:27 标题: [已解决]批处理如何根据指定条件提取回显中的内容?
回显内容类似这样:
job=20160105102433
progress=0
status=run
id=22
需求是:
对比job,一致的话分析progress值, 小于10且status为run的时候
回显job progress id
作者: gawk 时间: 2016-1-5 10:35
请举例说明什么是“job一致”
作者: chouxia 时间: 2016-1-5 10:39
回复 2# gawk
这是个子过程, 进入子过程之前会取得一个job值。
这个值会和子过程取到的值比较,只有一致的才会继续执行
作者: 回家路上 时间: 2016-1-5 10:54
- set new=你好,我是新来的,前来拜会...
- if "%new%" neq "" if "%job%"=="%new%" if %progress% lss 10 if "%status%"=="run" (
- echo;%job% %progress% %id%
- )
复制代码
作者: gawk 时间: 2016-1-5 14:42
- @echo off
- REM 进入子过程之前会取得一个job值
- set OldJob=20160105102433
-
- REM 用 type "1.txt" 模拟回显
- type "1.txt" | findstr "^job=%OldJob%$" >nul 2>&1
- if errorlevel 1 (
- echo job不一致
- goto :eof
- ) else (
- type "1.txt" | findstr "^status=run$" >nul 2>&1
- if errorlevel 1 (
- echo status不是run
- goto :eof
- ) else (
- for /f "tokens=2 delims==" %%i in ('type "1.txt" ^| findstr "progress="') do (
- if %%i lss 10 (
- type "1.txt" | findstr "job= progress= id="
- ) else (
- echo progress不小于10
- )
- )
- )
- )
- pause
复制代码
作者: flyinnet9 时间: 2016-1-5 16:21
综合4、5楼的水一个- @echo off
- REM 进入子过程之前会取得一个job值
- set OldJob=20160105102433
- REM 用 type "1.txt" 模拟回显
- for /f %%a in ('type 1.txt') do set %%a
- if "%job%"=="%oldjob%" if %progress% lss 10 if "%status%"=="run" echo.%job% %progress% %id%
复制代码
作者: chouxia 时间: 2016-1-6 08:32
根据回显内容的顺序,我用if 变量==值的方式进行了回显读取和判断
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |