0

以下のコードの変数として、1.txtのClassName =の後に来るものの代わりに、この間にあるものを使用したいと思います。

EntryText =船が沈んだ!|グリッドAO 77 | 変数

(変数の後のコンマとその前の|に注意してください)

したがって、2番目の|で終わるテキスト行の後に取得します。カンマの前。

変数の前のテキスト行は同じで一定ですが、「グリッド」の後を除いて、2番目までは文字と数字が混在している可能性があります。

だから私は変数として使用しようとしています、その間にあるもの:

EntryText =船が沈んだ!|グリッド(文字または数字の任意の組み合わせ) | (可変)(コンマ)

だから2番目の間につかむ| とコンマ。あなたより。ClassName =の後の変数の取得を、2番目の|の間にあるものに置き換えたいと思います。とコンマ。他にもあることを覚えておいてください| 取得したくないファイル内のコンマ、|の後に変数を取得したいだけです。「EntryText=Shipsunk!| Grid ...」の後の場合は、カンマの前。

繰り返しになりますが、グリッド部分は必要ありません。2番目の部分の後に来るものが欲しいです| カンマの前。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

ありがとうございました!!!!!

4

1 に答える 1

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
    ...
于 2013-02-22T14:06:42.400 に答える