在包含常量和其他变量的文本行中抓取变量

时间:2013-02-22 01:51:07

标签: batch-file

我想用作下面代码的变量,而不是在ClassName = 1.txt之后的内容,我希望介于此之间:

EntryText =船沉没!|网格AO 77 | 抓取变量(注意最后的逗号)

所以抓住以第二个|结尾的文本行在逗号之前。

" Grid"变量前的文本行将是相同的并且常量 EXCEPT 。可能有一个单词或不同的两对字母和数字,或任何字母和数字的混合,直到|

所以我试图用作变量,介于两者之间:

EntryText =船沉没!|网格(字母或数字的任意组合) | (变量)(逗号)

所以抓住第二个|和逗号。比你。

@echo off

copy 2.txt 2.txt-backup

setlocal enableDelayedExpansion

>2.txt (
for /f "tokens=1* delims=:" %%A in ('findstr /n "^" 2.txt-backup') do (
    ( echo !ln!| findstr "^Type=206$" >NUL && set ln=ln ) || (
        set "ln=%%B"
        if "!ln:~0,6!"=="Class=" (
            findstr /c:"ClassName=!ln:~6!" "E:\Dropbox\New folder\Log_*.txt" >"E:\Dropbox\New folder\null" && (
                echo Class=ShipDummy
                set "ln=Type=206"
            )
        )
        if #!ln!==# (echo;) else echo !ln!
    )
  )
)

1 个答案:

答案 0 :(得分:1)

for /f "tokens=3 delims=|" %%C in ("%%B") do for /f "tokens=1 delims=," %%D in ("%%C") do echo %%D