0

HTML作成スクリプトがあり、その中で次のことを試みています:

1.) SED を使用して、RelatedLinksBlock のすべてのインスタンスを複数行の DOS 変数に置き換えます
。2.) DOS 変数に一致する文字列を見つけて、REM アウトするか、SED を使用して削除します

数時間後、どちらの SED コマンドも機能せず、助けが必要です。

コード:

SETLOCAL ENABLEEXTENSIONS
SETLOCAL ENABLEDELAYEDEXPANSION
set nl=^& echo.
set fullHTMLpath=http://this.com
set FileTitle=Computer TEST
set keyfile=test.html
set rempath=REMthisOUT
set "delpath=^<li^> - ^<a href="%fullHTMLpath%" title="%FileTitle%"^>%FileTitle%^</a^>^</li^>"
set "path1=^<li^> - ^<a href="http://that.com/computers-and-operating-systems/asus-computer-support.html" title="ASUS Computer Support"^>ASUS Computer Support^</a^>^</li^>"
set "path2=^<li^> - ^<a href="http://that.com/computers-and-operating-systems/asus-laptop-support.html" title="ASUS Laptop Support"^>ASUS Laptop Support^</a^>^</li^>"
set "path3=^<li^> - ^<a href="http://that.com/computers-and-operating-systems/asus-support.html" title="ASUS Support"^>ASUS Support^</a^>^</li^>"
set alllinks=%path1%%nl%%path2%%nl%%path3%

sed -i "s/RelatedLinksBlock/%alllinks%/g" "%keyfile%"
sed -i "s/%delpath%/%rempath%/g" "%keyfile%"

ありがとうございました

4

1 に答える 1

0

sed が正しくわかっている場合、sed がバッチ ファイルではなく改行文字を処理するには、改行を \n にする必要があります。文字列のスラッシュはバックスラッシュでエスケープする必要があります。文字 \ / & が文字どおりに使用される場合は常に、エスケープする必要があります。また、あなたのスニペットには遅延展開を利用するものは何もないので、それを削除しました。

SETLOCAL ENABLEEXTENSIONS
set "fullHTMLpath=http:\/\/this.com"
set "FileTitle=Computer TEST"
set "keyfile=test.html"
set "rempath=REMthisOUT"
set "delpath=^<li^> - ^<a href="%fullHTMLpath%" title="%FileTitle%"^>%FileTitle%^<\/a^>^<\/li^>"
set "path1=^<li^> - ^<a href="http:\/\/that.com\/computers-and-operating-systems\/asus-computer-support.html" title="ASUS Computer Support"^>ASUS Computer Support^<\/a^>^<\/li^>"
set "path2=^<li^> - ^<a href="http:\/\/that.com\/computers-and-operating-systems\/asus-laptop-support.html" title="ASUS Laptop Support"^>ASUS Laptop Support^<\/a^>^<\/li^>"
set "path3=^<li^> - ^<a href="http:\/\/that.com\/computers-and-operating-systems\/asus-support.html" title="ASUS Support"^>ASUS Support^<\/a^>^<\/li^>"
set "alllinks=%path1%\n%path2%\n%path3%"

sed -i "s/RelatedLinksBlock/%alllinks%/g" "%keyfile%"
sed -i "s/%delpath%/%rempath%/g" "%keyfile%"

これらの提案以外に、表示できるエラー メッセージは表示されますか?

于 2012-12-08T23:13:56.817 に答える