(あなたの入力と仮定すると、ファイルに「test1.html」です)この方法を行うことができます。
findstr "<name>" test1.html > temp1.lis
FOR /F "tokens=2 delims=>" %%i in (temp1.lis) do @echo %%i > temp2.lis
FOR /F "tokens=1 delims=<" %%i in (temp2.lis) do @echo %%i > temp3.lis
最初の行はそれだけでHTML/XMLタグガードである 「名前は」に一致します2つのFORライン( はすでにこれを行っているかもしれません)。結果は一時ファイル "temp1.lis"に保存されます。
2行目は最初の ">"の右側にあるものをキャプチャします。実際には "< name>"の後に何が表示されますか。この段階で "MyName </name"は一時ファイル "temp2.lis"に残されます( として、終了タグにも ">"が含まれます)。これがBATファイルにあるので、ダブル "%"は (%% i)に注意してください(コマンドラインから直接 をテストしたい場合は "%"だけにしてください)。
第回線捕捉何が最初の「<」 の左側にされている - これは望ましい結果である:「MYNAME」は( 「MYNAME < /名前」の「<」のままです)。結果は変数%% iにあり、 は%% iをパラメータとする関数を呼び出し、その関数の 結果にアクセスできます(関数 の上のFOR行は組み込みの「エコー」であり結果これ
は
<name>MyName</name>
は、最初のHTML/XMLタグであれば上記にのみ機能することに注意してください)標準 出力のリダイレクトによって 一時ファイル「temp3.lis」で終わりましたライン。
代わりに、最初のFOR行(その が最初のパラメータとして受け取る)で関数を呼び出すことができます。その機能は次に "< name>"の代わりに という文字が入力されていることを示します。:
set RLINE=%MYLINE:<name>=£%
説明:入力ラインが変数%マイラインの%である場合、 「<名>」「£」に置き換えることになり、結果が変数%RLINE%が割り当て あろう。
置換の理由は、 FORループの区切り文字が1文字のみであるためです。
次に、(「> <名」の右に が何であるかを抽出する - 以前のように)FORループでの区切り文字として「£」を使用することができます。
echo %RLINE%>temp5.lis
FOR /F "tokens=2 delims=£" %%i in (temp5.lis) do @echo %%i > temp6.lis
あなたはこれを繰り返す必要があり"</name>" (但し、<の名前> MyName </name>が の行の最初のHTML/XMLタグでない場合のみ)。
あなたが見るように、それは可能ですが、かなり痛いです。
コードのようなテキストをバッククォート( '' '文字)で囲むと、そのまま入力することができます。これにより混乱を避けることができます - 山括弧をかっこで置き換えていることを確認するために、あなたの質問を数回読まなければなりませんでした。 –