基诺数解析器

时间:2016-09-16 11:40:22

标签: shell parsing batch-file

尝试制作一个处理基诺数的脚本,以执行各种模式查找操作。

每行数据如下所示:

  

576186 15/9/2016 21:50 8 9 12 15 22 26 32 37 39 46 49 54 57 58 59 61 67 68 70 71

这是我的代码公然从stackoverflow上的另一篇文章中删除,但略有修改。

for /f "tokens=1 delims=" %%f in (Keno.txt) do (
    set line=%%f
    call :processToken
)
goto :eof

:processToken
    for /f "tokens=1* delims=   " %%a in ("%line%") do (
        echo Got one token: %%a
        set line=%%b
        pause
    )
    if not "%line%" == "" (
        goto :processToken
    )
    goto :eof

在我开始处理原始基诺数之前,我试图截断每行的前3个分隔符,但我无法使用~-4%%%f上的%%a函数进行截断正确地做到这一点。我已经尝试了各种明显的方法,例如通过set string=%%f然后set string=%string:~-4来实现这一点,但即使使用!!%%个字符,这也不起作用。

任何知道怎么做的人?

我需要这个:

  

576186 15/9/2016 21:50 8 9 12 15 22 26 32 37 39 46 49 54 57 58 59 61 67 68 70 71

看起来像这样:

  

8 9 12 15 22 26 32 37 39 46 49 54 57 58 59 61 67 68 70 71

1 个答案:

答案 0 :(得分:3)

试试这个:

@echo off
for /f "usebackq tokens=1* delims=:" %%a in ("keno.txt") do (
    rem echo %%b
     set "flag="
     for %%# in (%%b) do (
         if defined flag (
             echo|set/p"=%%# "
         ) else (
            set "flag=1"
         )
     )
)

编辑可能更容易:

for /f "usebackq tokens=3* delims= " %%a in ("keno.txt") do (
    echo %%b
)