2016-09-16 44 views
3

试图制作一个脚本来处理基诺号码以执行各种模式查找操作。基诺号码解析器

数据的每一行看起来像这样:

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个分隔符之前,我开始处理原始基诺数字,但我不能使用截断:在%%f%%a~-4%功能正确做到这一点。我已经尝试了各种明显的方法,例如通过执行set string=%%f然后set string=%string:~-4来实现此目的,但即使使用!!%%字符也不起作用。

任何人都知道如何做到这一点?

我需要这样的:

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

要看起来像这样:

+4

为了''!!工作,你需要'SETLOCAL enabledelayedexpansion'。 – CristiFati

回答

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 
) 
+0

谢谢你,完美的工作! –

+2

为什么不使用''usebackq tokens = 3 * delims =“'?那么你不需要设置标志去除冒号后面的第一个标记。 – Squashman

+0

@Squashman - yes.Just想法也一样:-D – npocmaka