返回列表 发帖
原来跟我文本的版本不一样..=.=
加了个括号, 1,5,8 改1,5,8*
@echo off
set /a n=0
for /f "delims=*" %%i in ('findstr /i /n "class=.time." a.txt') do (
        set "var=%%i"
        setlocal enabledelayedexpansion
        if !n! LEQ 0 (
            for /f "tokens=4 delims=:<>" %%a in ("!var!") do (
                set top=%%a
                set top=!top:/=      !
                echo !top!
              )
        )else (
            for /f "tokens=1,5,8* delims=:<>" %%a in ("!var!") do (
                set /a cow=%%a
                set "uname=%%b"
                set "pbdate=%%c"
                set "d=%%d"
                set "pbdate=!pbdate: =-!:!d:~0,2!"
                set/p=!uname! !pbdate! <nul
                call :getpb !cow!
              )
        )
        endlocal
        set /a n+=1
)
pause
goto :eof
:getpb
for /f "skip=%1 tokens=3,5 delims=<>" %%x in (a.txt) do (
    set /a l+=1
    if !l! EQU 1 (set/p=%%x%%y <nul )  else (
        set/p=%%x <nul
        echo,
        goto :eof
    )
)COPY

[ 本帖最后由 caruko 于 2009-12-14 11:56 编辑 ]
1

评分人数

    • batman: 为你的参与加分,继续努力PB + 3

TOP

原帖由 batman 于 2009-12-12 17:35 发表
if !l! EQU 1 set/p=%%x%%y  


这个是去掉PB后面的空格.. 只不过都是输出到控制台,没>>B.TXT
本地运行正常啊...晕,昨天日期格式还正确的,今天就.... if 后也还得加个括号了

就是findstr /n 得到每个class=time(除了第一个time)的cow,然后for /f skip=cow 来取得后续几个元素
%l% 的值代表class=time 下面的第几行
因为 被评分者 看错成评分者了,所以 只取了2次就goto :eof
不过 帖子地址,被评分者 分别是%l%=5 ,6 时的行,稍扩展一下也能达到新的要求

[ 本帖最后由 caruko 于 2009-12-14 11:48 编辑 ]

TOP

回上..
效率确实不高 =.= 因为第2次读了文本
只不过对findstr不太熟,设计了几个复杂点的正则,结果都不对..

TOP

返回列表