[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 foxJL 于 2013-10-22 17:10 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=1,6 delims= " %%i in (a.txt) do (
  3. set/a n+=1,s=n-1
  4. set str!n!=%%j
  5. if /i %%i equ avge call echo %%str!s!%%
  6. )
  7. pause
复制代码

TOP

回复 5# inflikt


    一个文本里是不是有很多个AVGE?
我直接用你上面发出来的文本测试的,没有问题.

TOP

根据apang的思路来一个支持多TXT文本的
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('dir /a-d /b /s *.txt') do (
  3. for /f "tokens=1,5,6 delims= " %%i in (%%a) do (
  4. if defined flag (
  5. if /i %%i equ avge set "flag=" & echo "%%~nxa" --- !str!
  6. set str=%%k
  7. )
  8. if /i "%%j %%k"=="adjusted data" set flag=1
  9. )
  10. )
  11. pause
复制代码

TOP

本帖最后由 foxJL 于 2013-10-23 10:21 编辑

情况太复杂,写着写着就成这样了.我在本地测试能过,希望不会再出现别的情况
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('dir /a-d /b /s *.txt') do (
  3. for /f "usebackq tokens=1,* delims= " %%i in ("%%a") do (
  4. set "n="
  5. if defined flag (
  6. if /i "%%i"=="avge" (
  7. set "flag="
  8. for %%A in (!str1!) do (
  9. set/a n+=1,s=n-1
  10. set str_!n!=%%A
  11. )
  12. call echo "%%~nxa" --- %%str_!s!%%
  13. )
  14. set str1=%%j
  15. )
  16. set str=%%i%%j
  17. set str=!str: =!
  18. if /i "!str!"=="D11Finalseasonallyadjusteddata" set flag=1
  19. )
  20. )
  21. pause
复制代码

TOP

19楼更新了一下,应该可以了吧

TOP

回复 23# inflikt


再测试一下19楼的代码,在我本地是没有问题的.
因为公司电脑禁用了下载所以无法下载你的附件测试,只能用你16L的文本测试的.

TOP

回复 28# inflikt


    终于知道是什么问题了,b.txt 2009的下面一行才一个数字...重新修改了一下,应该可以了.
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('dir /a-d /b /s *.txt') do (
  3.     set "n="
  4.     for /f "usebackq tokens=1,* delims= " %%i in ("%%a") do (
  5.         if defined flag (
  6.         for %%A in (!str!) do (set/a n+=1,s=n-1 & set str_!n!=%%A)
  7.         if /i "%%i"=="avge" (set "flag=" & call echo "%%~nxa" --- %%str_!s!%%)
  8.     )
  9.     set str=%%i %%j
  10.     if /i "!str: =!"=="D11Finalseasonallyadjusteddata" set flag=1
  11.     )
  12. )
  13. pause
复制代码
1

评分人数

TOP

返回列表