だから、私は次のような行のhtmlファイルを持っています:
<script data-cfasync="false" type="text/javascript"> fid="RandonString"; v_width=620; v_height=490;</script>
私の仕事は、fid = "RandomString"を見つけて、外部ソフトウェアを使用せずに""の間のすべてをテキストファイルにコピーすることです。RandonStringの長さは2〜100文字です。
だから、私は次のような行のhtmlファイルを持っています:
<script data-cfasync="false" type="text/javascript"> fid="RandonString"; v_width=620; v_height=490;</script>
私の仕事は、fid = "RandomString"を見つけて、外部ソフトウェアを使用せずに""の間のすべてをテキストファイルにコピーすることです。RandonStringの長さは2〜100文字です。
それはそれほど難しいことではありません、ここに5行の解決策があります:
set "x=<script data-cfasync="false" type="text/javascript"> fid="RandonString"; v_width=620; v_height=490;</script>"
set "x=%x:*fid=%"
set "x=%x:";="&rem %
set x=%x:~2%
echo %x%
何が起こっているのかの説明。
文字列内の5つの特殊文字、、、、、および<
末尾>
の=
データのトリミングに使用される文字を処理する必要があります。 "
&
1〜3行目: <>
どちらもリダイレクト文字であるため、これらを処理するには、変数全体"
を二重引用符( )で囲む必要があります。ただし、変数自体に二重引用符を追加する必要はありません。
1行目設定する変数の前に最初の引用符( " x=
)を置き、設定するデータの後<script data-cfasync="false" type="text/javascript"> fid="RandonString"; v_width=620; v_height=490;</script>
に2番目の引用符(")を置くことにより、コマンドSETは引用符が変数に含まれないことを認識します。したがって、特殊文字を含む変数データをエラーなしで設定できます。(変数データ内に引用符を入れることもできますが、変数データに2つの特殊文字が追加され、他の検索および置換コマンドの処理がより困難になります。)
2行目次のステップは、までのすべてを削除し、までのすべてfid
を*fid
一致させfid
、=%
何も置き換えないことです。
3行目次のステップは、後";
にすべてを削除することです。これには少しハックが必要です。コマンドプロセッサは="&rem %
、検索と置換に追加することで、これを行うようにだまされる可能性があります。'='は、コマンドプロセッサに;"
次の文字に置き換えるように指示しますが、次の文字はです"
。これにより、前のsetコマンドが引用符で囲まれたコマンドになり、特殊&
文字が引用符で囲まれず、解釈できるようになります。これにより、基本的にすべて&
が別の行に配置されるため、searchandreplaceコマンドは何も置き換え";
られません。REM
ステートメントは、一致した後に来るデータを確認するためにあります";
コマンドとして解釈されず、リダイレクト文字が無視されることも意味します。
したがって、コマンドプロセッサが認識するのは次のとおりです。
set x=="RandonString
rem "; v_width=620; v_height=490;</script>
に設定x
します="RandonString
4行%x%
目ここで、で始まるので問題が発生します="
。両方とも=
特殊"
文字であり、=
特に一致させるのが困難です。しかし、幸いなことに、文字列はで始まることがわかっ="
ているので、解決策は簡単です。コマンドプロセッサに2番目の文字から開始するように指示することで最初の2文字をスキップします(文字0は現在= =
、文字1は現在= "
、したがって文字2 = R
)。したがって、2行目は。までのすべて(リダイレクト文字を含む)を削除しfid
、3行";
目は文字列の最後まで(リダイレクト文字を含む)を含むすべてを削除したため、
%x:~2%
=RandonString
。すべてのリダイレクト文字が削除されているので、変数を引用符で囲む必要はまったくありません。
5行目変数をechoするだけですx
。