我该如何申请?

时间:2013-02-22 04:55:00

标签: batch-file batch-processing

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

EntryText =沉没船只!|网格AO 77 | 变量

(注意变量之后的逗号和之前的|)

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

变量之前的文本行将是相同的并且在“Grid”之后的常量EXCEPT可能有任何字母和数字的混合,直到第二个|

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

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

所以抓住第二个|和逗号。比你。  我想将ClassName =之后的变量替换为第二个|之间的变量和逗号。 请记住,还有其他|和文件中的逗号,我不想抓住,我只想在|后获取变量在逗号之前,如果它在“EntryText = Ship sunk!| Grid ....

之后

同样,我不想要Grid部分,我想在第二部分之后发生什么在逗号之前。还会有很多EntryText行,所以我想抓住所有这些行并放入我的代码。

因此,而不是ClassName =之后的内容,我想复制上面列出的变量。

感谢您的时间!!

@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!
)
)
)

有人给我这个底码,但我不知道它是我想要的,也不知道如何将它应用到上面:

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

谢谢!!!!!

1 个答案:

答案 0 :(得分:1)

我想你想要这样的东西......

...
set "ln=%%B"
for /f "tokens=3 delims=|" %%C in ("%%B") do for /f "tokens=1 delims=," %%D in ("%%C") do set "MyVar=%%D"
findstr /c:"ClassName=!MyVar!" "E:\Dropbox\New folder\Log_*.txt" >"E:\Dropbox\New folder\null" && (
    echo Class=ShipDummy
    ...