如何在批处理文件函数中发送字符串作为参数?

时间:2012-03-28 08:43:08

标签: function parameters batch-file special-characters pipe

你好我正在用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

问题在于“call:MyFunc %% R”

html代码包含许多'<'和'>' (括号内)

这被解释为管道。

我试图避免。

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

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

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,因为调用会修改内容。

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