2016-08-29 3 views
1
@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 

Ich verstehe nicht, welche Zeilen 10 bis 13 genau tun. Die Idee besteht darin, bis zu 3 Eingaben zu sammeln und zu verarbeiten, um Suchanfragen in Suchmaschinen mit dem Startbefehl auszuführen. Ich schaffe es mit 1, bin mir aber nicht sicher, wie man mehrere Eingabeaufforderungen nur mit 1 Eingabefeld macht. Ich bin mir auch nicht sicher, was die erstellte temporäre Datei macht und die Variablen set heading=%~2 und set message=%~1.Mehrere Suchabfragen in vbs /.bat

Antwort

0

Um zu verstehen, was die Linien 10 und 11 tun, müssen Sie zuerst verstehen, was die Linien 2 und 8 tun:

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

Die Aussage Batch call, nicht nur andere andere Batch-Skripte ausführen, sondern auch kann das aktuelle Batch-Skript ab dem angegebenen Label (hier :InputBox) erneut ausführen. Grundsätzlich Sie erneut Ausführen des Skripts, sondern nur seine zweite Hälfte Ausführung:

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 

Die Linien 10 und 11, die Argumente der call Aussage zu den Variablen heading und message zuweisen.

Zeile 12 erstellt dann eine temporäre VBScript-Datei, die eine InputBox anzeigt und echotiert, was auch immer der Benutzer in dieses Eingabefeld eingegeben hat.

Schließlich führt Zeile 13 das VBScript, übergibt %heading% und %message% als Titel und Text des Eingabefeldes. Da das Skript mit dem Befehlszeileninterpreter cscript.exe ausgeführt wird, wird die Ausgabe des Echos in STDOUT geschrieben und der Variablen input über die Schleife for zugewiesen. Diese Variable bleibt gefüllt, nachdem die call zurückgibt, so dass Sie %input% in Zeile 3 ausgeben können (und möglicherweise in Ihren Suchen verwenden).

Um tatsächlich nach der Eingabe zu suchen, müssen Sie die Suchmaschinen-URLs jedoch mit den richtigen Parametern aufrufen. Zum Beispiel, würden Sie eine Google-Suche wie folgt starten:

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

Andere Suchmaschinen wahrscheinlich verschiedene Parameter haben, so müssen Sie, dass für jeden Motor überprüfen. Außerdem müssen Sie möglicherweise Sonderzeichen und mehrere Suchbegriffe in input behandeln (z. B. foo bar bazfoo+bar+baz).

+0

In der Tat, ich freue mich, diese% Eingabe% auf mehrere manipulierte URLs zu laufen, aber einige von ihnen haben 2 und 3 Form Eingabefelder, ich muss mehrere Suchvorgänge auf mehreren Suchmaschinen jeden Tag am Job ständig ausführen . – Grotesque2000

+0

Die Anzahl der Eingabefelder auf der Webseite ist nicht relevant. Es kommt darauf an, ob Sie eine einzelne URL zum Ausführen der Abfrage erstellen können. –

+0

Dies ist ein Beispiel von 1 von ihnen: [https://box.tool.com/tools/v3/?ts=tool&item_id=%Input%&=fname&fn_item=&customer_id="data_query"client&item="data_query"&location_id=1] Ich konnte das und ein paar andere manipulieren. Es ist merkwürdig, dass nach der Abfrage die Strings doppelt so groß sind, dass es leicht zu erkennen ist, wo sich die Abfrage befindet. – Grotesque2000