【问题标题】:Multiple search query in vbs /.batvbs /.bat 中的多个搜索查询
【发布时间】:2017-01-05 20:13:09
【问题描述】:
@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 行究竟做了什么。这个想法是收集和处理最多 3 个输入,以使用 start 命令在搜索引擎中运行搜索查询。我设法用 1 来做到这一点,但不确定如何只提示 1 个输入框。另外,我不确定创建的临时文件在做什么以及set heading=%~2set message=%~1 变量的功能。

【问题讨论】:

    标签: windows batch-file vbscript


    【解决方案1】:

    要了解第 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%(并可能在您的搜索中使用它)。

    不过,要真正搜索输入,您需要使用正确的参数调用搜索引擎 URL。例如,您会像这样启动 Google 搜索:

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

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

    【讨论】:

    • 确实,谢谢,我希望在几个被操纵的 URL 上运行这个 %input%,但是其中一些有 2 和 3 个表单输入框,我必须在多个搜索引擎上不断地运行多个搜索每天都在工作。
    • 网页上输入字段的数量无关紧要。重要的是您是否可以构建单个 URL 来执行查询。
    • 这是其中 1 个的示例:[box.tool.com/tools/v3/…,我能够操纵这个和其他一些。奇怪的是,在查询之后,字符串的大小翻了一番,很容易发现查询的位置。
    猜你喜欢
    • 2020-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    • 1970-01-01
    • 2010-10-13
    • 2022-01-21
    相关资源
    最近更新 更多