2012-03-28 3 views
0

こんにちは私はWindowsのバッチファイルでWebページ検索プログラムを作っていますバッチファイル関数のパラメータとして文字列を送信する方法は?

それを検索する前に、私は変数と正規表現にHTMLコードを保存する必要があります。

は、私は、関数のパラメータとしての特殊文字混在の文字列を送信することができますか疑問

のWindows XP SP3の午前

私のコードはここでの問題はコール」である

cd curl-7.25 

for /f "tokens=*" %%R IN ('curl.exe -G --max-redirs 3 http://www.google.com?') DO call:MyFunc %%R 

pause 

:MyFunc 
echo %~1 
goto:eof 

です:MyFuncと%% R "

htmlコードには多くの '<'と '>'(かっこ)が含まれています

これは配管として解釈されます。

私は避けようとしています。

任意のヘルプは、あなたがカールからそれを受け取るとあなたは、%% Rの内容を免れることはできない

答えて

0

をいただければ幸いです。
しかし、遅延拡張で処理できます。

cd curl-7.25 
set "curlCmd=curl.exe -G --max-redirs 3 http://www.google.com?" 

setlocal DisableDelayedExpansion 
for /f "tokens=*" %%R IN ('!curlCmd!') DO (
    set "line=%%R" 
    call :MyFunc line 
) 
pause 
exit /b 

:MyFunc 
setlocal EnableDelayedExpansion 
echo !%~1! 
rem ** Or you can use directly echo !line! 
endlocal 
exit /b 

私は最初に遅延拡張を無効にします。そうしないと、感嘆符やキャレットに問題が発生します。
そして、コールがコンテンツを変更するため、:MyFuncをコンテンツではなく変数名で呼び出します。

コンテンツにアクセスするには遅延拡張を有効にしてください。遅延拡張は決して変数の内容を変更または妨害しないためです。

関連する問題