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

[文本处理] [已解决]批处理如何根据指定条件提取回显中的内容?

回显内容类似这样:
job=20160105102433
progress=0
status=run
id=22
需求是:
对比job,一致的话分析progress值, 小于10且status为run的时候
回显job    progress    id
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

请举例说明什么是“job一致”
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

回复 2# gawk


    这是个子过程, 进入子过程之前会取得一个job值。
这个值会和子过程取到的值比较,只有一致的才会继续执行

TOP

  1. set new=你好,我是新来的,前来拜会...
  2. if "%new%" neq "" if "%job%"=="%new%" if %progress% lss 10 if "%status%"=="run" (
  3.         echo;%job%    %progress%    %id%
  4. )
复制代码
人生是一部书/只有这一页最温暖/读懂它的时候/我们在远方流泪...

TOP

  1. @echo off
  2. REM 进入子过程之前会取得一个job值
  3. set OldJob=20160105102433
  4. REM 用 type "1.txt" 模拟回显
  5. type "1.txt" | findstr "^job=%OldJob%$" >nul 2>&1
  6. if errorlevel 1 (
  7.     echo job不一致
  8.     goto :eof
  9. ) else (
  10.     type "1.txt" | findstr "^status=run$" >nul 2>&1
  11.     if errorlevel 1 (
  12.         echo status不是run
  13.         goto :eof
  14.     ) else (
  15.         for /f "tokens=2 delims==" %%i in ('type "1.txt" ^| findstr "progress="') do (
  16.             if %%i lss 10 (
  17.                 type "1.txt" | findstr "job= progress= id="
  18.             ) else (
  19.                 echo progress不小于10
  20.             )
  21.         )
  22.     )
  23. )
  24. pause
复制代码
1

评分人数

Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

综合4、5楼的水一个
  1. @echo off
  2. REM 进入子过程之前会取得一个job值
  3. set OldJob=20160105102433
  4. REM 用 type "1.txt" 模拟回显
  5. for /f %%a in ('type 1.txt') do set %%a
  6. if "%job%"=="%oldjob%" if %progress% lss 10 if "%status%"=="run" echo.%job% %progress% %id%
复制代码
1

评分人数

TOP

根据回显内容的顺序,我用if 变量==值的方式进行了回显读取和判断

TOP

返回列表