login  Naam:   Wachtwoord: 
Registreer je!
 Tutorials

Tutorials > Overig


Gegevens:
Geschreven door:
nemesiskoen
Moeilijkheidsgraad:
Moeilijk
Hits:
17005
Punten:
Aantal punten:
 (4.29)
Aantal stemmen:
7
Stem:
Niet ingelogd
Nota's:
 Lees de nota's (1)
 


Tutorial:

WSH - VBS 4 + Batch

1. Wat?
2. WS
3. Batch
4. VBS + Batch
 top
1. Wat?

Deze tutorial is geen hapje. Ik ga hier 2 "talen" combineren om eeen actie uit te laten voeren in dos/opdrachtprompt.
Het nut hiervan ga je misschien niet direct inzien, maar als je ooit later een programma voor iemand moet maken dan ga je hem geen notepad onder zijn neus steken.
Mooie inputboxjes, en met de ingevoerde gegevens acties uitvoeren.
En wat kan je nu toevallig met VBS: inputboxjes aanroepen...
En wat kan je met Batch: acties uitvoeren.
Dus vandaar de combinatie van de twee "talen".

Ik schrijf de talen tussen quotes omdat Batch niet echt een taal is, het is meer dos-uitvoeren.
Maar dat terzijden... laten we beginnen!
 top
2. WS

Ik ga eerst beginnen met VBS, hierin ga ik een object uitleggen om acties uit te voeren met VBS.
Dit object gaan we de gegevens van een .shell bestand aanwijzen waardoor het programma gemachtigd is die acties uit te voeren.
Dit lijkt allemaal heel ingewikkeld maar dat is omdat het in theorie moeilijk valt uit te leggen.
Het is in feite maar 1 regel code, die er als volgt uitziet:
Set ws = WScript.CreateObject ("WScript.Shell")

Ik gebruik de declaratie methode Set, dit wordt gebruikt om een object te declareren.
Daarna geef ik een naam voor het object, dit wordt later weer gebruikt om het object en zijn methodes aan te roepen.
Met WScript roep ik het object WScript aan, deze wordt ook gebruik om iets weer te geven, hier wordt ze echter gebruikt met het statement CreateObject om een Object te maken.
Daarna geef ik het type file op, een .shell.
Eigelijk moet je al het bovenstaande niet weten, maar gewoon de regel kopieren en plakken als je hem nodig hebt.

Waarom leg ik dit nu allemaal uit?
Omdat we het straks nodig hebben om een link te kunnen leggen met ons batch "programma".
 top
3. Batch

Batch is een taal die de opdrachtprompt/dos oproept en hierin dos instructies uitvoert.
Een voorbeeld van een DOS instructie is CD (change directory).
Een ander voorbeeld is bv. javac of dmc.
Zoals je ziet kan je via Batch snel een programaatje compileren, en mogelijk zelfs een java applet aanroepen.
Maar we zullen beginnen met het begin, een simpel Batch programaatje dat het register opent.
@echo off
regedit

Plak bovenstaande code in kladblok en slaag het op als register.bat.
Open het bestand en het register wordt geopend.
Nu even een kleine uitleg.
Met @echo off zeggen we dat de uitgevoerde acties NIET op het scherm moeten komen, omdat dit eigelijk niet interessant is.
Als je batch programma niet werkt kan je hem even op 'on' zetten om te zien wat hij wel en niet doet.
Regedit is een dos commando om het register te openen, dus ook een batch commando.
 top
4. VBS + Batch

Nu gaan we een vbs script maken dat gegevens in een .bat bestand steekt.
Nu moet je weten dat je bij batch parameters kan meegeven.
Dit gebeurt via het statement %1.
Nu is het nog vrij onduidelijk, maar met het voorbeeld komt dat wel.

Ik ga alles uit leggen aan de hand van een voorbeeld.
Er bestaat een DOS commando (ping) om verbinding proberen te leggen met een andere computer via het IP adres.
Ping kan dus ook gebruikt worden in batch.
Nu willen we de persoon het IP adres kunnen laten ingeven... met batch kan dit ook, maar dan heb je de dos/opdrachtprompt look... en met vbs kan je mooi met een inputboxje werken.
Dus we linken ons VBS bestand aan het batch bestand!

De code voor het pingen ziet er zo uit:
@echo off
ping
%1

Eerst @echo off, en daarna het ping statement, gevolgd door %1, dit om het gepingde adres variabel te maken.
Als je dit runt in je cmd, dan kan je bv doen: ping.bat 123.45.10.100, dit zou moeten pingen naar de computer met dat IP adres.
Hoogstwaarschijnlijk krijg je wel geen verbinding omdat het beveiligd is.
Nu willen we ons resultaat wegschrijven naar een .txt bestand om het daarna te zien.
Via het ">" statement kan je gegevens wegschrijven.
Eerst veranderen we van directory (cd) om dan de gegevens in het juiste bestand op de juiste plaats weg te schrijven.
@echo off
e
:
cd
cd vbs
ping
%1 > ip.txt

Mijn bestand staat op mijn e schijf, dus ga ik daar naartoe.
Via cd ga ik naar het begin van mijn schijf, en via cd vbs ga ik naar mijn map vbs.
Vervolgens schrijf ik het resultaat van het pingen weg in ip.txt.

Dit was het voor het batch gedeelte, nu volgt het vbs gedeelte.
Dim input
Set ws
= WScript.CreateObject ("WScript.Shell")

Eerst declareren we de variabele input (hierin gaan we straks ons ingegeven IP-adres steken).

input = inputbox("Geef het IP-adres in")

Ik vraag het IP-adres en steek het in de variabele input.
Nu moeten we zorgen dat de waarde van input naar het batch bestand wordt overgebracht.
Ik ga dit doen doormiddel van een snelkoppeling naar het batch bestand met de waarde van input in de snelkoppeling.
En hiervoor gebruik ik die ws.
De snelkoppeling maak je zo:
Set scut = ws.CreateShortcut ("labo_a.lnk")

Set wordt gebruikt voor het declareren van objecten, scut is een object naam.
CreateShortcut is een methode van het object ws, en de tekst tussen de ("") is de naam van de snelkoppeling.
De snelkoppeling wordt standaard in dezelfde map als je .vbs bestand geplaatst.

Nu ga ik de snelkoppeling laten linken naar het batch bestand.
scut.TargetPath = "E:vbslabo_a.bat"

TargetPath is een methode van het object scut.
Hierin word het doel (Target) van de snelkoppeling opgegeven.
Mijn batch bestand noemt labo_a.bat dus zo noem ik het target path.
Ook moet ik mjin pad(Path) hierbij opgeven, zodat het .vbs bestand weet waar hij moet gaan zoeken.

Nu moeten we enkel nog ons argument (input) meegeven aan de snelkopelling en dit opslaan.
De methode Arguments wordt gebruikt om een waarde mee te geven (in ons geval input) en de methode Save wordt gebruikt om op te slaan.
scut.Arguments = input
scut
.Save

Nu alles mooi opslaan en uitvoeren.
Normaal gezien zal dit de ping gegevens doorsturen naar het .txt document ip.

Als je toch nog vragen hebt mail me of stuur een pm.


« Vorige tutorial : WSH - VBS 3 Loops en Arrays Volgende tutorial : Search Engine Optimalisation »

© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.012s