vbs /.bat中的多个搜索查询

时间:2016-08-29 17:56:23

标签: windows batch-file vbscript

@echo off
call :inputbox "Enter the imput" "JIFFY"
echo You entered %Input% too late to back down now :)
start "search1" "www.google.com"
start "search2" "www.duckduckgo.com"
start "search3" "www.wolframalpha.com"
exit /b
:InputBox
set input=
set heading=%~2
set message=%~1
echo wscript.echo inputbox(WScript.Arguments(1),WScript.Arguments(0)) >"%temp%\input.vbs"
for /f "tokens=* delims=" %%a in ('cscript //nologo "%temp%\input.vbs" "%message%" "%heading%"') do set input=%%a
exit /b

我不明白第10到13行是做什么的。我们的想法是使用start命令收集和处理最多3个输入以在搜索引擎中运行搜索查询。我设法用1来做,但我不知道怎么做多个提示只有1个输入框。此外,我不确定创建的临时文件正在做什么以及set heading=%~2set message=%~1变量'功能

1 个答案:

答案 0 :(得分:0)

要了解第10行和第11行正在做什么,首先需要了解第2行和第8行正在做什么:

@echo off
call :inputbox "Enter the imput" "JIFFY"
...
:InputBox
...

批处理call语句不仅可以运行其他批处理脚本,还可以从给定标签(此处为:InputBox)开始重新运行当前批处理脚本。基本上,你重新运行脚本,但只执行它的下半部分:

set input=
set heading=%~2
set message=%~1
echo wscript.echo inputbox(WScript.Arguments(1),WScript.Arguments(0)) >"%temp%\input.vbs"
for /f "tokens=* delims=" %%a in ('cscript //nologo "%temp%\input.vbs" "%message%" "%heading%"') do set input=%%a
exit /b

第10行和第11行将call语句的参数分配给变量headingmessage

第12行然后创建一个临时VBScript文件,显示InputBox并回显用户在该输入框中输入的内容。

最后,第13行运行VBScript,传递%heading%%message%作为输入框的标题和文本。由于脚本是使用命令行解释器cscript.exe运行的,因此回显的输出将写入STDOUT,并由for循环分配给变量input。在call返回后,该变量仍会填充,因此您可以在第3行输出%input%(并可能在搜索中使用它)。

要实际搜索输入,您需要使用正确的参数调用搜索引擎网址。例如,您可以启动Google搜索:

start "title" "http://www.google.com/search?q=%input%"

其他搜索引擎可能有不同的参数,因此您需要检查每个引擎。此外,您可能需要在input处理特殊字符和多个搜索字词(例如foo bar bazfoo+bar+baz)。