2016-09-16 106 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