だから、私は次のような行の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。