2012-03-28 58 views
0

你好我正在制作与Windows批处理文件的网页搜索程序如何在批处理文件函数中发送字符串作为参数?

在搜索之前,我需要将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代码包含许多'<'和'>'(括号)

,这解释为管道。

我试图避免。

任何帮助,将不胜感激

回答

0

你无法逃避%% R的内容,当你从卷曲收到它。
但是,您可以通过延迟扩展来处理它。

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与变量名称不是内容,因为调用会修改内容。

而访问内容我启用延迟扩展,因为延迟扩展不会修改或干扰变量的内容。

相关问题