@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=%~2
和set message=%~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
语句的参数分配给变量heading
和message
。
第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 baz
→foo+bar+baz
)。