tutorial de vbscript[1]

24
Tutorial de vbscript  by Novlucker Temas Introducción - pdf 1,2 Operadores Esctructuras de control If Case For !ile "o #ane$o de ob$etos Filesyste%ob$ec t&F'O( - pdf 1, 2 )s!'!ell )s!Net)ork - pdf 1, 2 "ictionary - pdf 1, 2 Co%%ondialo* - pdf 1, 2 'e ir+n aadiendo nuevos ob$ectos para d escar*a en pdf ueno, pri%ero aclarar .ue este tutorial, pretende e/plicar de %anera b+sica las distintas instrucciones aplicadas en visual basic script &vbs de a.u0 en %+s(, para .ue as0 de este %odo, todos a.uellos interesados en este len*ua$e de scriptin*, ten*an la posibilidad de co%enar a desarrollar sus pe.ueos scripts Introducción: 3ara e%pear , debe%os decir, .ue los vbs, tal y co%o lo dice su no%bre, son 4si%ples4 scripts, .ue se e$ecutan por %edio de un int5rprete en el siste%a, con lo .ue bastar+ con crear el códi*o en un si%ple bloc de notas &o si%ilar(, y *uardarlo con e/tensión *.vbs, sin necesidad de realiar nin*una co%pilación &aun.ue e/iste la posibilidad( En este caso el int5rprete es, el Windows Script Host de #icrosoft, por lo .ue estar+ presente &aun.ue en distintas versiones( de %anera predeter%inada desde in 67 en adelante, as0 .ue podre%os !acer uso de estos arc!ivos en pr+ctica%ente, todos los indo)s 'e puede decir .ue los vbs son una %e$ora con respecto a los bat, ya .ue estos per%iten una %ayor interacción con el siste%a operativo, y decir ade%+s .ue este len*ua$e, es un derivado de Visual Basic, por lo .ue desde un principio y aun.ue de %anera %uc!o %+s li%itada, se podr+ fa%iliariar con dic!o le*ua$e &la sinta/is es si%ilar en todos los aspectos( A tener en cuenta antes de comenzar: 8 En vbs no i%po rtan las %ay9sculas o %in9sc ulas :script ; vbscript 8 3ara indicar un final d e l0nea, no se debe de !ac er %+s .ue pasa r a la si*uiente &no es necesario ter%inar con por e$e%plo 4 < 4 co%o en $avascript( 8 =os co%entarios, van precedidos de una 4 > 4 &co%illa si%ple (  > Esto es un co%entario 8 No es obli*atorio de clarar las variables , aun.ue es co nveniente !ace rlo para de$ar %+s le *ible el

Upload: punto-xtrem

Post on 06-Jul-2018

226 views

Category:

Documents


0 download

TRANSCRIPT

8/17/2019 Tutorial de Vbscript[1]

http://slidepdf.com/reader/full/tutorial-de-vbscript1 1/24

Tutorial de vbscript by Novlucker

Temas

• Introducción - pdf 1,2

• Operadores

• Esctructuras de control

• If

• Case

• For

• !ile

• "o

• #ane$o de ob$etos

• Filesyste%ob$ect&F'O( - pdf 1, 2

• )s!'!ell

• )s!Net)ork - pdf 1, 2

• "ictionary - pdf 1, 2

• Co%%ondialo* - pdf 1, 2

'e ir+n aadiendo nuevos ob$ectos para descar*a en pdf

ueno, pri%ero aclarar .ue este tutorial, pretende e/plicar de %anera b+sica las distintas

instrucciones aplicadas en visual basic script &vbs de a.u0 en %+s(, para .ue as0 de este %odo, todosa.uellos interesados en este len*ua$e de scriptin*, ten*an la posibilidad de co%enar a desarrollar

sus pe.ueos scripts

Introducción:

3ara e%pear, debe%os decir, .ue los vbs, tal y co%o lo dice su no%bre, son 4si%ples4 scripts, .ue

se e$ecutan por %edio de un int5rprete en el siste%a, con lo .ue bastar+ con crear el códi*o en unsi%ple bloc de notas &o si%ilar(, y *uardarlo con e/tensión *.vbs, sin necesidad de realiar nin*una

co%pilación &aun.ue e/iste la posibilidad(

En este caso el int5rprete es, el Windows Script Host de #icrosoft, por lo .ue estar+ presente

&aun.ue en distintas versiones( de %anera predeter%inada desde in 67 en adelante, as0 .uepodre%os !acer uso de estos arc!ivos en pr+ctica%ente, todos los indo)s

'e puede decir .ue los vbs son una %e$ora con respecto a los bat, ya .ue estos per%iten una %ayorinteracción con el siste%a operativo, y decir ade%+s .ue este len*ua$e, es un derivado de VisualBasic, por lo .ue desde un principio y aun.ue de %anera %uc!o %+s li%itada, se podr+ fa%iliariarcon dic!o le*ua$e &la sinta/is es si%ilar en todos los aspectos(

A tener en cuenta antes de comenzar:

8 En vbs no i%portan las %ay9sculas o %in9sculas:script ; vbscript

8 3ara indicar un final de l0nea, no se debe de !acer %+s .ue pasar a la si*uiente &no es necesario

ter%inar con por e$e%plo 4 < 4 co%o en $avascript(

8 =os co%entarios, van precedidos de una 4 > 4 &co%illa si%ple(  > Esto es un co%entario8 No es obli*atorio declarar las variables, aun.ue es conveniente !acerlo para de$ar %+s le*ible el

8/17/2019 Tutorial de Vbscript[1]

http://slidepdf.com/reader/full/tutorial-de-vbscript1 2/24

códi*o

  'e pueden declarar utiliando im, o bien, se les da valor directa%ente  im nuestravariable

  Ta%bi5n puede ser utiliado !ption e"plicit para as0 4obli*arse4 a declarar las variables &en los

pe.ueos e$e%plos lo !ar5 as0(

En la %ayor0a de los e$e%plos utiliar5 la función ms#bo", la cual se encar*a de %ostrar un%ensa$e en pantalla

 

Tipos de dato:

E/isten varios tipos de datos .ue pueden %ane$arse en vbs, y los .ue %+s va%os a utiliar, son <ooleano, yte, Fec!a, "ouble, Entero, Entero lar*o, Ob$eto, 'in*le, Cadena

Todos estos representan valores verdadero?falso, fec!a?!ora, n9%erosentero positivo?ne*ativo,

cadena de te/to &no creo necesite %+s e/plicación .ue esta(

!peradores:

Tendre%os varios tipos de operadores a nuestra disposición

1 @rit%5ticosA 'u%a&B(, esta&-(, #ultiplicación&D(, "ivisión deci%al&?(, "ivisión entero&(,

3otencia&(, esto división&%od(2 Co%paraciónA I*ual&;(, "istinto&GH(, #ayor&H(, #enor&G(, #enos o i*ual&G;(, #ayor o

i*ual&H;(

=ó*icosA J&and(, O&or(, Kor, No&not(L "e cadenaA Concatenación&M(

Estos !an sido a *randes ras*os, los operadores a utiliar en vbs, por lo .ue despu5s, y !aciendo uso

de nuestro pró/i%o te%a &estructuras de control(, se %ostrar+n al*unos e$e%plos

$structuras de control:

1 I% &condicional'Esta se utilia para evaluar 2 o %+s posibles resultados, en virtud del cual, se to%ar+n diferentes

acciones 

Citar"i% valor

:alor ; 7If  valor G 1 t!en  #s*bo/ 4El valor es #ENO a die 4

Else  #s*bo/ 4El valor es #@JO a die 4

End if

Co%o se ve en este e$e%plo se co%iena declarando la variable (valor(, lue*o de esto, se le asi*na

el valor ), y posterior a esto, se eval9a dic!o valor &!aciendo uso de los operadores de co%paraciónvistos anterior%ente(, por lo .ue si el valor es %enor a +, se %ostrar+ un %ensa$e en pantalla

indicando .ue es #ENO, de lo contrario, el %ensa$e indicar+ #@JO &en este caso le !ab0a%os

asi*nado el valor 7, por lo .ue ser+ %enor( 

8/17/2019 Tutorial de Vbscript[1]

http://slidepdf.com/reader/full/tutorial-de-vbscript1 3/24

2 ,ase &condicional'En el caso del IF, si bien no se !a %ostrado, e/iste la posibilidad de anidar dos o %+s, para as0realiar varias evaluaciones, pero el caso es .ue cuando se realian %uc!as, el códi*o puede

volverse al*o en*orroso Es en estos casos, donde recurri%os al select case

Citar

"i% nu%ero

nu%ero ; 7'elect case nu%ero  case 

  %s*bo/ 4El valor es seis 4

  case P  %s*bo/ 4El valor es siete 4

  case 7  %s*bo/ 4El valor es oc!o 4

End select

@l i*ual .ue en el anterior, en este e$e%plo, se co%iena definiendo la variable 4nu%ero4, y se leasi*na ) co%o valor =ue*o con select case se indica .ue es lo .ue se va a revisar, en este caso,cuanto es el valor de 4nu%ero4, lue*o, se indican las opciones con un case por cada una de ellas, en

este caso, 4case 4, en el caso de .ue el valor sea , 4case P4, y 4case 74, para el caso de .ue el valor

sea P y 7 respectiva%ente &co%o sabe%os es 7(, es decir, 4si es 4, %ensa$e 4El valor es seis4, 4si esP4, %ensa$e 4El valor es siete4, y 4si es 74, %ensa$e 4El valor es oc!o4

%!- &bucle'El for es utiliado cuando .uere%os repetir una deter%inada acción un cierto n9%ero de veces

Citar

"i% i

For i;1 to Q step 1  #s*bo/ 4El valor de i esA 4 M i

Ne/t

Co%ena%os definiendo la variable 4i4, lue*o de esto, inicialia%os el bucle for, es decir, deci%os.ue< desde 4i4 i*ual , a 4i4 i*ual , incre%entando de a

, %ostrare%os un %ensa$e con la frase 4El valor de i esA 4 y lue*o de esto, el valor real de 4i4, por

lo .ue en cada 4paso4 .ue de nuestro bucle, %ostrar+ al*o %+s o %enos as0R

Co%o ven, Q %ensa$es 4casi4 i*uales, ya .ue la secuencia se repite Q veces, y lo 9nico .ue ca%biaes el valor de 4i4 &la !e%os concatenado al %ensa$e con el car+cter M(, ya .ue va to%ando distintos

valores en cada uno de los 4pasos4

L %!- $A,H&bucle'El for eac!, tiene la particularidad de .ue es un for .ue recorre todos los ele%entos de una coleccióno vector @ntes de continuar, intentar5 e/plicar lo .ue es un 4array4, ya .ue ser+ lo .ue utilice%os en

el e$e%plo

Sn arra/ o matriz, es una estructura de datos en for%a de variable, .ue per%ite al%acenar %+s de

un 9nico valor, dentro de una 9nica variable 3ara acceder a cada uno de estos valores, ser+necesario !acer uso de 0ndices

Citar

8/17/2019 Tutorial de Vbscript[1]

http://slidepdf.com/reader/full/tutorial-de-vbscript1 4/24

"i% no%bres&2(

no%bres&(; 4#art0n4no%bres&1(; 43ablo 4

no%bres&2(; 4Carlos 4

#s*bo/ no%bres&1(

En este e$e%plo, se define la variable 4no%bres4 .ue tendr+ espacio para valores &tener en cuenta.ue co%iena por , por eso .ue se pon*a 2(, y lue*o, se definen cada uno de los valores de

4no%bres4 3or 9lti%o utilia%os un %ensa$e, para %ostrar el valor del 0ndice 1 del array, con el

si*uiente resultadoR

Co%o se ve, el %ensa$e %uestra el no%bre 43ablo4 por.ue al lla%ar al array, !e%os puesto el 0ndice1, y co%o se ve cuando lo declara%os, le !ab0a%os asi*nado valor 43ablo4, en el caso de indicar 2

en lu*ar del 1, el %ensa$e %ostrar0a 4Carlos4

Espero esto !aya .uedado lo suficiente%ente claro@!ora, volviendo al For eac! &espero ya no te !ayas olvidado(, este podr0a ser utiliado en el caso

del array &!ay otros casos(

Citar

"i% no%bres"i% n

no%bres ; array&4#art0n4,43ablo4,4Carlos4(For eac! n in no%bres

  #s*bo/ n

ne/t

@ pesar de .ue no lo pareca, es %uy si%ilar al anterior, y al*unos estar+n diciendo, 4.ue ten0a .uever el array con esto4, pero si se fi$an, sola%ente !e %ostrado, una se*unda %anera de declarar el

array

En este caso, en lu*ar de ir %etiendo cada uno de los valores con sus respectivos 0ndices, declaro elarray en una sola l0nea y va .uedando or*aniado se*9n el orden en el .ue %eta los valores, por eso,

4#art0n4 .uedar+ en el lu*ar , 43ablo4 en el lu*ar 1, y 4Carlos4, en el lu*ar 2, al i#ual .ue en elcaso anterior Esto con respecto al array, a!ora a lo .ue 0ba%os, el for eac!

En l0neas si*uientes co%ena%os con el for, y deci%os, por cada 4n4 &la letra, en este caso 4n4 la

ele*i%os nosotros( en 4no%bres4 &es un array .ue contiene tres

no%bres(, %ensa$e con el 4n4, o lo .ue es i*ual, por cada no%bre, en el 4contenedor4 (nombres(,%ensa$e con el no%bre, y el resultado es el si*uienteR

Tanto en 0or si%ple, co%o en el 0or eac1, pode%os !acer uso de e"it 0or, para parar la e$ecucióndel for co%pleta 3ara decirlo de otra %anera, con esto escapa%os al for

I=E &bucle(El bucle )!ile, es utiliado cuando .uere%os .ue una deter%inada acción se repita %ientras una

deter%inada condición de cu%pla

Citar

"i% nu%ero

8/17/2019 Tutorial de Vbscript[1]

http://slidepdf.com/reader/full/tutorial-de-vbscript1 5/24

Nu%ero ; 1

!ile nu%ero G; 1  #s*bo/ nu%ero

  nu%ero ; nu%ero B 1

end

Co%ena%os el e$e%plo declarando la variable nu%ero, y le asi*na%os valor 1, lue*oe$ecuta%os bucle, %ientras el valor de 4nu%ero4 sea %enor o i*ual a 1,

%ostra%os %ensa$e con el valor de nu%ero, y ade%+s le su%a%os 1 al propio valor de nu%ero &de

este %odo lo utilia%os a %odo de contador(, lue*o de 1 veces de %ostrar %ensa$e, el valor de4nu%ero4 ser+ i*ual a  y al verificarse la condición esta no se cu%plir+, por lo .ue ter%inar+

Q ! &bucle'El bucle do tiene varias opciones, pero b+sica%ente !ar+ al*o, 4%ientras4, o 4!asta .ue4 ocurra

al*o

Citar

"o  #s*bo/ 4Esto es un %ensa$e4=oop

Este bucle, se repetir+ al infinito, por lo .ue %ostrar+ un %ensa$e, inter%inables veces@!ora bien, este do, puede ser %odificado, para tener al*o %+s de control sobre 5l, y es $usta%ente

!aciendo uso de esas condiciones .ue co%entaba antes, 4%ientras4, o 4!asta .ue4

Citar

"i% a ; 1"o until a;1

  #s*bo/ 4Esto es un %ensa$e4

=oop

Este códi*o se resu%e en< %ensa$e de 4Esto es un %ensa$e4 !asta .ue 4a4 sea i*ual a 1En lu*ar de until podr0a utiliarse w1ile, para ca%biar la condición a %ensa$e de 4Esto es un

%ensa$e4 %ientras 4a4 sea distinta de 1

Citar"i% a ; 1

"o )!ile aGH1

  #s*bo/ 4Esto es un %ensa$e4=oop

J ta%bi5n puede utiliarse until y w1ile, antes o despu5s de e$ecutarse el bucle

Citar"o until?)!ile condición &es distinta se*9n sea until o )!ile(

  #s*bo/ 4Esto es un %ensa$e4=oop until?)!ile

Co%o se ve, este bucle nos per%ite darle varios usos se*9n nos conven*a, por lo .ue ter%ina siendo%uy vers+til y 9til

@l i*ual .ue para los 0or, en el caso de .uerer salir de un bucle do, ta%bi5n conta%os con una

función de escape, en este caso, e"it do

8/17/2019 Tutorial de Vbscript[1]

http://slidepdf.com/reader/full/tutorial-de-vbscript1 6/24

@s0 ter%ina est+ pe.uea introducción a las rutinas b+sicas de visual basic script, la idea es se*uir

e/tendiendo este 4tuto4, co%o co%entario a*re*o ade%+s, .ue este len*ua$e posee %uc!isi%asfunciones, las cuales no detallar5, ya .ue ser0a inter%inable, ade%+s de .ue %e centrar5 %+s

adelante, en e/plicar funciones e/pecificas de ob$etos

En el caso de .uerer %+s docu%entación al respecto, se pueden descar*ar la docu%entación sobre

)indo)s script !ost, donde tendr+n la referencia a todas las funciones de las .ue pode%os !aceruso Windows Script .2 ocumentation

#ane$o de ob$etos

@nterior%ente, !e intentado %ostrar las diferentes estructuras de control .ue nos per%itenenca%inar nuestros vbs, es por esto .ue a!ora, pasare%os a los OUETO'

Toda interacción de vbs con el siste%a se basa en el %ane$o de ob$ectos &@ctiveK(, .ue no son %+s.ue librer0as especialiadas y a nuestra diposición, por lo .ue dependiendo de lo .ue bus.ue%os

!acer, !are%os uso de una u otra &%eclandolas en nuestros scripts(NotaA No !ar5 uso de di% para declarar variables en los e$e%plos, para as0 a!orrar espacio

=os ob$etos b+sicos de los .ue se !ace uso son dosA

1 F'O &File'yste%Ob$ect(A %ane$o de unidades, arc!ivos y carpetas

2 s!'!ellA acceso a infor%ación de siste%a, traba$o con el re*istro, %ane$o accesos directos,e$ecución de aplicaciones

@ntes de continuar debo de e/plicar .ue al traba$ar con los ob$etos, los %is%os se deben de declarar

de la si*uiente %aneraA

'et variable ; createob3ect&ob$ecto(

E$e%ploA

'et ob$fso ; createob$ect&4scriptin*filssyste%ob$ect4(@!ora s0, pasa%os directa%ente al an+lisis del ob$eto F'O

%S! &%ile S/stem !b3ect'

=as distintas funciones .ue se pueden realiar a trav5s de este ob$eto sonA8 orrar, %over y copiar arc!ivos

8 =eer y escribir en arc!ivos de te/to &Crear(8 Obtener y %odificar atributos de arc!ivos y carpetas

8 Crear, borrar, %over y copiar carpetas

8 Obtener propiedades de arc!ivos y carpetas8 =istar subcarpetas

8 =istar discos y particiones

8 Obtener propiedades de discos y particiones8 Obtener deter%inadas rutas de siste%a

4over arc1ivos

8/17/2019 Tutorial de Vbscript[1]

http://slidepdf.com/reader/full/tutorial-de-vbscript1 7/24

!b30so.move0ile ori#en5 destino

E$e%ploA

Códi*o

Set objfso = createobject("scripting.filesystemobject")

Objfso.movefile "C:\archivo.txt" "!:\Carpeta"

Borrar arc1ivos

!b30so.delete0ile arc1ivo

E$e%ploACódi*o

Set objfso = createobject("scripting.filesystemobject")Objfso.eletefile "C:\archivo.txt"

,opiar arc1ivos

!b30so.cop/0ile ori#en5 destino5 sobreescribir

E$e%ploACódi*o

Set objfso = createobject("scripting.filesystemobject")Objfso.copyfile "C:\archivo.txt" "!:\estino.txt" tr#e

,rear carpetas

Set variable 6 ob30so.create0older&destino carpeta'

E$e%ploACódi*o

Set objfso = createobject("scripting.filesystemobject")Set micarpeta = objfso.createfoler("C:\carpeta")

4over carpetas

!b30so.move0older ori#en5 destino

E$e%ploACódi*o

Set objfso = createobject("scripting.filesystemobject")Objfso.movefoler  "C:\Carpeta" "!:\!estino"

Borrar carpetas

!b30so.delete0older carpeta

8/17/2019 Tutorial de Vbscript[1]

http://slidepdf.com/reader/full/tutorial-de-vbscript1 8/24

E$e%ploACódi*o

Objfso.eletefoler "C:\Carpeta"

,opiar carpetas

!b30so.cop/0older ori#en5 destino5 sobreescribir

E$e%ploA

Códi*o

Set objfso = createobject("scripting.filesystemobject")Objfso.copyfoler "C:\Carpeta" "!:\!estino" tr#e

7eer / escribir en arc1ivos

3ara el %ane$o de arc!ivos de te/to, debe%os de tener en cuenta, la e/istencia o no del arc!ivo, y el%odo en el .ue accede%os a 5l

Obvia%ente, si un arc!ivo no e/iste, no podr5%os acceder a 5l, y a su ve, si abri%os un arc!ivo en

%odo de l5ctura, nunca podre%os escribir dentro

,rear arc1ivos de te"to / escribir en ellos

Set variable 6 ob30so.createte"t0ile&ruta5 sobreescribir'

E$e%ploACódi*o

Set objfso = createobject("scripting.filesystemobject")Set archivotexto = objfso.createtextfile("C:\archivo.txt"tr#e) $creamos elarchivoarchivotexto.%riteline "&ste es el texto '#e estoy escribieno" $escribimos #nalineaarchivotexto.%riteblanlines()  $escribimos lineas enblancoarchivotexto.%riteline "*'#i mas texto"  $ escribimosotra linea e textoarchivotexto.close  $cerramos el

archivo

Notese .ue al co%enar, !e%os creado el arc!ivo y lo !e%os asi*nado a una variable, lue*o !e%os

utiliado el identificador de arc!ivo &variable(, para escribir dentro de 5l, en este caso, !e%osutiliado )riteline, .ue escribe una l0nea, y a*re*a un retorno de carro para .ue si volve%os a

escribir, lo !a*a%os en una nueva l0nea, en ca%bio , si en su lu*ar, utilia%os )rite, el resultado,ser+ .ue no !abr+ salto de l0nea, por lo .ue todas las oraciones iran .uedando una detr+s de la otra

3or 9lti%o, !e%os cerrado el arc!ivo

Abrir arc1ivos de te"to / escribir en ellos

Set variable 6 ob30so.opente"t0ile&ruta5 modo5 creación'

8/17/2019 Tutorial de Vbscript[1]

http://slidepdf.com/reader/full/tutorial-de-vbscript1 9/24

E$e%ploA

Códi*o

Set objfso = createobject("scripting.filesystemobject")Set archivotexto = objfso.opentextfile("C:\archivo.txt"+tr#e)$abrimos el archivoarchivotexto.%riteline "&ste es el texto '#e estoy escribieno"$escribimos #na lineaarchivotexto.close$cerramos el archivo

Co%o se puede ver, al abrir el arc!ivo, !e%os indicado la ruta, el %odo 7 .ue se utilia paraappendin* o escritura al final de arc!ivo, y true, .ue .uiere decir .ue en caso de .ue no e/ista el

arc!ivo se cree, es decir .ue de este %odo, no solo abri%os el arc!ivo, sino .ue de no e/istir, dic!o

arc!ivo ser+ creado en el proceso

3ara tener en cuenta, los %odos en los .ue se puede abrir un arc!ivo sonA1- #odo =ECTS@

2- #odo E'CITS@ &escribe al principio(

7- #odo @33EN"INV &escribe al final(

Co%o se puede ver, al abrir el arc!ivo, !e%os indicado la ruta, el %odo 7 .ue se utilia paraappendin* o escritura al final de arc!ivo, y true, .ue .uiere decir .ue en caso de .ue no e/ista el

arc!ivo se cree, es decir .ue de este %odo, no solo abri%os el arc!ivo, sino .ue de no e/istir, dic!o

arc!ivo ser+ creado en el proceso

7eer desde arc1ivos de te"to

@s0 co%o abri%os arc!ivos y pode%os escribir en ellos, ta%bi5n e/iste la posibilidad de leer desdeellos, para lo cual utiliare%os readline, y readallCo%o se puede i%a*inar, con readline ire%os leyendo una a una las l0neas del arc!ivo &cada ve

.ue pon*a%os readline leere%os solo una(, con este, lee%os una l0nea, y el puntero se situa al finalde la l0nea, para .ue a la pró/i%a e$ecución de esta función, sea la l0nea si*uiente la .ue sea le0da

Con readall en ca%bio, leere%os el total de arc!ivo

E/iste ade%+s una función lla%ada skipline, con la cual saltare%os la lectura de una l0nea

E$e%ploACódi*o

Set objfso = createobject("scripting.filesystemobject")

Set archivotexto = objfso.opentextfile("C:\archivo.txt",)  $abrimos elarchivomsgbox archivotexto.realine  $leemos #nalinea la primeraarchivotexto.sipline$saltamos #na lineamsgbox archivotexto.realine  $leemos #nalinea la terceraarchivotexto.close$cerramos el archivo

Atributos de arc1ivos / carpetas

@ continuación e/plicar5 el %5todo %ediante el cual, se puede obtener, o bien ca%biar, los atribuos

8/17/2019 Tutorial de Vbscript[1]

http://slidepdf.com/reader/full/tutorial-de-vbscript1 10/24

de arc!ivos y carpetas &es pr+ctica%ente i*ual para a%bas cosas(

!btener atributos

Set variable 6 ob30so.#et0ile&ruta'variable.attributes

E$e%ploA

Códi*o

Set objfso = createobject("scripting.filesystemobject")Set archivo = objfso.getfile("C:\t#torial.pf") $obtenemos el control sobre elarchivo pf-sgbox archivo.attrib#tes  $mensaje con los attrib#tos elarchivo

En este e$e%plo ve%os .ue lue*o de declarar el ob$eto, lo .ue !ace%os es obtener el control del el

arc!ivo tutorialpdf, para lo cual utilia%os *etfile, y asi*na%os el arc!ivo a la variable arc!ivo=ue*o, y ya con el arc!ivo en la variable, pode%os utiliarlo directa%ente para %ostrar susatributos, .ue no ser+ %+s .ue un n9%ero .ue en*lobar+ todas las constantes de los atributos

=as constantes .ue !acen referencia a los atributos de arc!ivo sonA

Valor01248

163264128

AtributoNormalSolo LecturaOcultoSistemaLetra de disco

Carpeta/directorioArchivoLin o acceso directoComprimido

Co%o co%entaba antes, attributes devolver+ un valor 9nico .ue ser+ la su%atoria de cada uno de losvalores para cada atributo del arc!ivo

Co%o e$e%ploA

Sn arc!ivo .ue ten*a atributos de< solo lectura, oculto, de siste%a, y de arc!ivo, tendr+ un valor de1B2BLB2; 6

 

,ambiar atributos

Set variable 6 ob30so.#et0ile&ruta'variable.attributes 6 sumaatributos

E$e%ploACódi*o

Set objfso = createobject("scripting.filesystemobject")Set archivo = objfso.getfile("C:\t#torial.pf") $obtenemos el control sobre elarchivo pfarchivo.attrib#tes = /  $attrib#to earchivo y oc#lto

El ca%biar atributos consiste si%ple%ente en asi*nar un valor a attributes

8/17/2019 Tutorial de Vbscript[1]

http://slidepdf.com/reader/full/tutorial-de-vbscript1 11/24

En el e$e%plo anterior !e puesto co%o valor L .ue representa atributos de arc!ivo y oculto

8ropiedades de arc1ivos / carpetas

@s0 co%o pode%os obtener y %odificar los atributos de los arc!ivos y carpetas, pode%os acceder adeter%inadas propiedades de los %is%os, entre ellasA

8 No%bre< na%e8 No%bre corto< s!ortna%e

8 Ta%ao< 'ie

8 uta co%pleta< pat!8 uta corta< s!ortpat!

8 Fec!a de creación?%odificación?9lti%o acceso< datecreated, datelast%odified, datelastaccessed8 Tipo de arc!ivo< type

8 Carpeta contenedora< parentfolder

Estas son las principales propiedades a las .ue pode%os acceder, lo cual se !ar+ de la si*uiente

for%aA

Set variable 6 ob30so.#et0ile&ruta'4s#bo" variable.propiedad

E$e%ploACódi*o

Set objfso = createobject("scripting.filesystemobject")Set archivo = objfso.getfile("C:\t#torial.pf")  $obtenemos el controlsobre el archivo pf-sgbox archivo.si0e  $tamano el archivo enbytes

3ara obtener otras propiedades, si%ple%ente ser0a cuestión de ca%biar 4sie4 por al*una de lasotras propiedades a las .ue tene%os acceso &les reco%iendo probar con cada una para ver los

resultados(, y de i*ual %anera, se !ar0a con carpetas en lu*ar de arc!ivos, para lo .ue sola%ente

tendr0a%os .ue ca%biar *etfile, por *etfolder

7istar subcarpetas

Con listar subcarpetas, nos referi%os a, acceder a la colección de subcarpetas de una carpeta 4K4,

para traba$ar con cada una de ellas de %anera independiente

Cuando !abla%os de colección, !ace%os referencia a un array, en el .ue est+n todos los ele%entoscontenidos en un deter%inado 4listado4

Set variable 6 ob30so.#et0older&ruta'Set subvariable 6 variable.sub0olders

E$e%ploACódi*o

Set objfso = createobject("scripting.filesystemobject")Set micarpeta = objfso.getfoler("C:\Carpeta")  $obtenemos el controlsobre la carpetaSet s#bcarpetas = micarpeta.s#bfolers  $obtenemos la coleccion es#bcarpetas1or each s in s#bcarpetas $por caa carpeta(s) en

8/17/2019 Tutorial de Vbscript[1]

http://slidepdf.com/reader/full/tutorial-de-vbscript1 12/24

la coleccion(s#bcarpetas)-sgbox s.name  $mensaje con el nombre2ext  $pasamos a la sig#ientes#bcarpeta

ueno, co%o se ve en este caso, el acceder a las subcarpetas no es total%ente directo, sino .ue, en

un principio, obtene%os la colección &array( de carpetas, para lue*o traba$ar con cada una de ellaspor %edio de un for .ue recorre toda la colección@l listar subcarpetas, se debe de terner en cuenta ade%+s, .ue la colección, sola%ente contiene, las

carpetas del pri%er nivel, y no las .ue se encuentran en los niveles consi*uientes, para .ue .uede

%+s claroA

CAcarpetaCAcarpetanivel1

CAcarpetanivel1nivel2

'i lista%os la colección de subcarpetas en la carpeta 4CAcarpeta4, obtendre%os todas las del nivel

1, pero no las del nivel 2, para eso, deber0a%os de i%ple%entar otro for .ue !a*a referencia a estas

7istar discos9particiones

@l i*ual .ue para listar subcarpetas, para listar discos y particiones lo !are%os a traves de una

colección, por lo .ue en realidad, ser+ %uy si%ilar al punto anterior

Set variable 6 ob30so.#et0older&ruta'Set discos 6 variable.drives

E$e%ploA

Códi*o

Set objfso = createobject("scripting.filesystemobject")Set iscos = objfso.rives  $obtenemos lacoleccion e iscos1or each in iscos $por caa isco() en lacoleccion(iscos)-sgbox .riveletter  $mensaje con la letra eisco2ext  $pasamos al sig#ienteisco

Co%o ya se !ab0a dic!o, el %5todo de listar los discos y particiones, es el %is%o .ue para obtenerlas subcarpetas de una carpeta, por lo .ue no deber0a de presentar nin*9n proble%a el !acerlo

Ta%bi5n aclarar, .ue en el anterior e$e%plo, solo !e inclu0do una propiedad .ue no se !ab0a visto

anterior%ente, y esta es la de driveletter, y .ue co%o ya se !abr+n dado cuenta, !ace referencia a laletra .ue tiene asi*nado el disco o partición en el site%a, por lo .ue una ve %encionado esto,

pasare%os $usta%ente, a identificar, cuales son las propiedades de disco a las .ue tendre%os acceso

8ropiedades de disco

Co%o !e%os visto en el anterior punto, a traves del ob$ecto F'O es posible acceder a la colecciónde discos, as0 co%o a sus propiedades, siendo estas propiedades, lassi*uientesA

8/17/2019 Tutorial de Vbscript[1]

http://slidepdf.com/reader/full/tutorial-de-vbscript1 13/24

8 =etra< driveletter

8 No%bre del disco< volu%ena%e8 Espacio disponible< availablespace

8 Espacio libre< freespace

8 Espacio total< totalsie8 "isponibilidad< isready

8 uta< pat!8 'iste%a de fic!eros &NTF', F@T, C"F'(< filesyste%

8 Carpeta principal< rootfolder

8 N9%ero de serie< serialnu%ber8 No%bre co%partido< s!arena%e

8 Tipo de disco< drivetype

E$e%plo, no pondr5 en este caso, ya .ue es ser0a i*ual al .ue !e puesto anterior%ente

3or otra parte, sola%ente profundiar5 en una de las propiedades de los discos &creo .ue las otras

son facil%ente identificables(, y es $usta%ente, la 9lti%a .ue !e enu%erado, drivetype

El tipo de disco de un disco &val*a la redundancia(, puede estar entre los si*uientesA

Valor01234!

Tipo"nno#n/$esconocido%emova&le/%emovi&le'i(ed/%)*idoNet#or/%edC$+%om%A, $is

Ta%bi5n !e de acotar, .ue la dis.uetera &Snidad @(, es reconocida co%o disco e/tra0ble, as0 co%o

ta%bi5n ocurre, con las unidades virtuales, e$< a.uellas carpetas %ontadas con el co%ando 'S'Tde %s-dos

-utas de carpetas

3or 9lti%o, pero no %enos i%portante, debo de co%entar .ue el ob$ecto F'O, per%ite obtener laruta de tres de las carpetas %+s i%portantes del siste%a, co%o lo sonA

8 indo)s &(

8 'yste%2 &1(8 Te%p &2(

3ara acceder a ellas, !are%os uso de la función *etspecialfolder

Set variable 6 ob30so.#etspecial0older&constante'

E$e%ploACódi*o

Set objfso = createobject("scripting.filesystemobject")Set micarpeta = objfso.getspecialfoler(3)  $obtenemos el controlsobre la carpeta-sgbox micarpeta.path  $mensaje con la r#ta e lacarpeta

 

Co%o se ve en e$e%plo, en este caso, nos !ace%os con el control de la carpeta de )indo)s, y lue*o

8/17/2019 Tutorial de Vbscript[1]

http://slidepdf.com/reader/full/tutorial-de-vbscript1 14/24

%ostra%os su ruta, para poder acceder a las carpetas, las constantes son las .ue !e indicado en un

entre parentesis en un principio, al no%brar las carpetasueno, con esto !e%os ter%inado con el ob$eto F'O, pase%os entonces al se*undo y principal

ob$eto, la s!ell

S1ell &wscript.s1ell'

@ trav5s de este ob$eto pode%os entre otras cosasA

8 #ostrar %ensa$es te%poriados

8 =eer, borrar, y escribir en el re*istro de )indo)s8 E$ecutar aplicaciones &dos %5todos(

8 Obtener el foco de una ventana8 Enviar pulsaciones de teclado

8 @cceder %ultiples carpetas de siste%a

8 Obtener variables del siste%a8 Crear accesos directos

4ostrar mensa3es temporizados

Esta es la %enos i%portante de todas las funciones de este ob$eto, pero no de$a de ser 9til en al*unasocasiones, sobre todo, si no .uere%os .ue un proceso se blo.uee, solo por intentar %ostrar un

%ensa$e 3ara .ue .uede %+s claro, a lo lar*o de todos los e$e%plo .ue !e puesto, !e ido %ostrandodeter%inados %ensa$es a traves de la función de %s*bo/ &opción b+sica( =os %ensa$es *enerados

con dic!a función, no salen de pantalla, !asta bien el usuario, no da click en el?los botones .ue tiene

el cuadro de %ensa$e, por lo .ue en caso de utiliar un %ensa$e de este tipo, la e$ecución de nuestroscript, se parar+ !asta bien este no sal*a de pantalla

3ero en lu*ar de utiliar este tipo de %ensa$e, pode%os !acer uso de una %ensa$e popup, la cualdesaparecer+ sola al cabo del tie%po .ue !aya%os especificado, lue*o de lo cual, continuar+ la

e$ecución del script

#odo en el .ue se e%plea esta ventanaA

Variablemensa3e 6 variable.popup&te"to5 tse#undos5 ttulo5 botones'

E$e%ploA

Códi*o

Set objshell = createobject("4script.shell")rmensaje = objshell.pop#p("&ste es #n mensaje e pr#eba""-ensaje 5op#p"6/) 

El resultado<

3ara e%pear, se puede apreciar .ue el ob$eto s!ell, se declara con scripts!ell, y bueno, lo

referente al %ensa$e, creo .ue una i%a*en dice %+s .ue %il palabras, !e%os %ostrado un %ensa$een pantalla, el cual al cabo de se*undos, desaparecera y dar+ paso al resto de nuestro script

'i se !a %irado detenida%ente, se notar+ .ue para los 4botones4 !e puesto el valor L, este valor,

!ace referencia a la su%atoria de los botones e iconos .ue aparecen en la ventana de %ensa$e,

siendo los %is%osA

Botones:

8/17/2019 Tutorial de Vbscript[1]

http://slidepdf.com/reader/full/tutorial-de-vbscript1 15/24

Valor01234

!

DescripciónO- O- . CancelarA&ortar %eintentar e *norarSi No . CancelarSi . No

%eintentar . Cancelar

Iconos

Valor16324864

Descripciónarar/rrorre*unta(clamacinnormacin

En el caso de %i %ensa$e, el L corresponde a la su%a del botón de ok &cero( y el icono de

infor%ación &L('i .uisiera%os %ostrar un %ensa$e de 'i, No y Cancelar, con un icono de pre*unta, deber0a%os de

poner co%o valor el n9%ero Q &B2(

3or otro lado, ta%bi5n ve%os en el e$e%plo co%o el popup, se *uarda en una variable de no%bre

r%ensa$e En dic!a variable, se *uarda el valor de la respuesta dada al %ensa$e, es decir, para el

caso de un %ensa$e con los botones de 'i, No y Cancelar, la variable r%ensa$e *uardar0a el valor decual de esos botones fue presionado por el usuario, siendo estas las posibilidadesA

Valor1234!65

DescripciónO- CancelarA&ortar%eintentar*norarSiNo

Es decir, .ue en caso de .ue la persona presione 'i, el resultado obtenido ser+ , esto puede

servirnos de %uc!o si .uere%os darle un poco de interactividad a nuestros scripts y to%ardiferentes ca%inos en virtud de las respuestas de los usuarios, lo cual puede ser utiliado $unto a las

funciones de %s*bo/ &para esta ta%bi5n valen los botones e iconos( e inputbo/, aun.ue a pesar dela %ención las vere%os en detalle, ya .ue no dependen de nin*9n ob$eto, y son de f+cil

co%prensión

7eer5 borrar / modi0icar el re#istro de windows

'in lu*ar a dudas, es una de las funciones %+s atractivas de este ob$eto, y su i%ple%entación no

i%plica nin*una dificultad, y a9n as0, la i%ple%entación de esta función, no presenta nin*una

dificultad

7eer valores

8/17/2019 Tutorial de Vbscript[1]

http://slidepdf.com/reader/full/tutorial-de-vbscript1 16/24

variable.re#read&llave de re#istro'

E$e%ploA

Códi*o

Set objshell = createobject("%script.shell")

-sgboxobjshell.regrea("78C9\Soft%are\-icrosoft\4ino%s\C#rrentersion\&xplorer\Shell1olers\-y 5ict#res") 

$va too en #na misma linea la llave es m#y larga

'encillo de entender, a trav5s del ob$eto s!ell lla%a%os a la función re*read, encar*ada de leer las

llaves del re*istro, en este caso, !e optado por una llave un tanto lar*a, pero .ue contiene la ruta dela carpeta de 4%is i%+*enes4, al i*ual .ue en otros e$e%plos, %uestro el valor por %edio de un

%s*bo/, pero co%o en todos los casos, es posible *uardar este valor en una variable para lue*otraba$ar con ella

Borrar valores

variable.re#delete&llave de re#istro'

E$e%ploA

Códi*o

Set objshell = createobject("%script.shell")objshell.regelete("78C9\Soft%are\-icrosoft\4ino%s\C#rrentersion\&xplorer\Shell 1olers\-y 5ict#res")

@l i*ual .ue para leer, el borrar cadenas no tiene nada de especial, sino .ue si%ple%ente debe%os

de lla%ar a la función re*delete para des!acernos de la cadena en cuestión

$scribir9modi0icar el re#istro

@l*o .ue de se*uro le interesar+ a varios

variable.re#write&llave de re#istro5 valor5 tipo de dato'

E$e%ploA

Códi*o

Set objshell = createobject("%script.shell")objshell.reg%rite("78C9\Soft%are\-icrosoft\4ino%s\C#rrentersion\5olicies\System\!isable;as-gr","<&>!4O<!") 

$va too en #na misma linea la llave es m#y larga

En este e$e%plo, estar0a%os %odificando la llave del re*istro .ue des!abilita el ad%inistrador de

tareas &task%*r(=os datos .ue debe%os de pasarle a esta función son< la llave a %odificar?crear claro esta, el valor

.ue le dare%os, en %i e$e%plo !a sido 1, y el tipo de datos .ue esta%os in*resando

Co%o %uc!os sabr+n, el re*istro de )indo)s soporta ciertos tipos de datos en las diferentes clavesde las .ue !ace uso, a saberA

8/17/2019 Tutorial de Vbscript[1]

http://slidepdf.com/reader/full/tutorial-de-vbscript1 17/24

Tipo%7S%7$9O%$%7:NA%;%7<AN$7S

DescripciónCadenaNum=rico:inario"na cadena e(pandi&le

E/iste un .uinto tipo de datos, el EVW#S=TIW'X, pero no es soportado por esta función

Tener en cuenta .ue re*)rite puede tener proble%as con cadenas de%asiado lar*as, y considerar

ta%bi5n, .ue tal co%o !e puesto en el t0tulo, re*)rite crear+ una llave en caso de no e/istir, y la%odificar+ en caso de .ue ya est5 presente

Ta%bi5n !e de reco%endar .ue en caso de traba$ar con el re*istro se !a de tener %uc!o cuidado, y

.ue .uererse de$ar el code %+s le*ible, se utilicen las si*uientesabreviaciones &lo !e !ec!o en %i e$e%plo(A

Llave principal>-;7C"%%N?7"S%>-;7LOCAL7,AC>N

>-;7CLASSS7%OO?>-;7"S%S>-;7C"%%N?7CON'

Abreviación>-C">-L,

>-C%>-;7"S%S>-;7C"%%N?7CON'

$3ecutar aplicaciones

Co%o !e co%entado antes, a traves de este ob$eto e/isten dos %5todos diferentes de e$ecutar

aplicaciones, los cuales ade%+s, tendr+n diferentes opciones y resultados

4;todo -un

Este es el %+s si%ple y usado de los dos %5todos

variable.run rutapro#rama5 estadoventana5 espera

E$e%ploA

Códi*o

Set objshell = createobject("%script.shell")Objshell.r#n "notepa" , tr#e

En este caso e$ecuta%os el bloc de notas, en %odo nor%al, y establece%os, .ue el script se pause&true( !asta .ue se cierre la aplicación &notepad(=os estados en los .ue se puede abrir la ventana, van del al 1, pasando por oculto, %a/i%iado y

%ini%iado, entre otros, pero pasar5 de e/plicar cada uno de ellos ya .ue resulta %e$or opciónprobar y ver el resultado, .ue lo .ue podr0a ser la e/plicación

=o .ue si cabe destacar, es el estado &cero( o vb!ide, .ue e$ecuta una aplicación en %odo oculto,

sin %ostrar nin*9n tipo de ventana 3robar por e$e%plo sustituyendo el n9%ero 1 por vb!ide en ele$e%plo .ue !e de$ado, para ver &en realidad no se ver+ nada( co%o se e$ecuta el notepad sin

%ostrar nin*una ventana &si se ver+ el proceso en el ad%inistrador de tareas(Tener en cuenta ade%+s, .ue el estado de la ventana, y la espera del pro*ra%a, son total%ente

opcionales , as0 .ue con poner si%ple%ente ob$s!ellrun 4notepad4 !ubiese alcanado

4;todo $"ec

8/17/2019 Tutorial de Vbscript[1]

http://slidepdf.com/reader/full/tutorial-de-vbscript1 18/24

Este %5todo es %uy si%ilar al anterior, sola%ente .ue nos per%ite un %ayor control sobre la

aplicación .ue esta%os corriendo, con la e/cepción de .ue no nos per%ite seleccionar estado de laventana

variable.e"ec&rutapro#rama'

E$e%ploACódi*o

Set objshell = createobject("%script.shell")Objshell.&xec("notepa")

Co%o ve%os, el %5todo en el .ue se e$ecuta la aplicación es practica%ente i*ual al anterior,

sola%ente !e%os sutitu0do run por e/ec y no !e%os pasado nin*9n par+%etro

a la función, pero a!ora vea%os .ue es lo .ue o !ace diferente del otro %5todo

8 'tatus

8 3rocessI"8 Ter%inate8 'tdin, 'tdout, 'tderr

Estas ser0an las funciones .ue diferencian el e/ec del run, todas estas se aplican sobre la aplicación?co%ando .ue esta%os e$cutando, por lo .ue, para !acer uso de esta funcionalidad, es necesario

e$ecutar la aplicación, y asi*nar la %is%a a una variable para lue*o traba$ar a traves de esta:ea%os esto, $unto a la e/plicación de status y processid

El status identifica el estado de la aplicación e$ecutada, &cero( representa una aplicación en

e$ecución, y 1 &uno(, indentifica .ue la aplicación fue cerrada y su proceso ya no se encuentrapresente

Con respecto al processid, creo .ue salta a la vista la función del %is%o, no es %+s .ue elidentificador de proceso &3I"(

E$e%ploACódi*o

Set objshell = createobject("%script.shell")Set bloc = Objshell.&xec("notepa") -sgbox bloc.stat#s-sgbox bloc.processi

En este e$e%plo, e$ecuta%os el bloc de notas, asi*nando su proceso a la variable 4bloc4, y lue*o

%ostra%os dos %ensa$es, uno con el status &deber0a de ser (, y otro con el n9%ero de proceso=a función status nos servir+ en definitiva, para poder %onitorear nuestro proceso, y realiar una

deter%inada acción en función de si per%anece abierto, o bien, lo !an cerrado

E$e%ploA

Códi*o

Set objshell = createobject("%script.shell")Set bloc = objshell.&xec("notepa")!o %hile bloc.stat#s = 3

  4script.sleep 33  $sirve para hacer #na pa#sa e x milesimas eseg#noloopmsgbox "Se ha cerrao el bloc e notas"

8/17/2019 Tutorial de Vbscript[1]

http://slidepdf.com/reader/full/tutorial-de-vbscript1 19/24

3ase%os entonces a terminate

Esta función, per%ite ter%inar el proceso .ue !ab0a%os iniciado, por lo .ue por su no%bre era f+cil

predecirlo

E$e%ploACódi*o

Set objshell = createobject("%script.shell")Set bloc = objshell.&xec("notepa")4script.sleep ?333  $5a#sa e ?333 milesimas o ? seg#nosbloc.terminate

@bri%os el bloc de notas, realia%os una espera de Q se*undos, y cerra%os el bloc de notas, f+cil

3asando a!ora a las 9lti%as funciones de e/ec< stdin, stdout, stderr, debo de aclarar .ue estas

funciones pueden ser utiles a la !ora de traba$ar en l0nea de co%andos, pero dado .ue en l0nea deco%andos !ay %e$ores %aneras &a %i criterio( de !acerlo, obviar5 la e/plicación de dos de estas

funciones, y solo le dar5 i%portancia a stdout .ue si puede facilitarnos la tarea en la e$ecución deco%andos de %s-dos

'tdout nos %uestra la salida de un los co%andos e$ecutados a traves de e/ec, y para .ue se entienda%e$or, pasare directa%ente a un

E$e%ploA

Códi*o

Set objshell = createobject("%script.shell")Set ping = objshell.exec("cm @c ping %%%.google.com")-sgbox ping.sto#t.reaall

El resultadoA

En este e$e%plo, !e%os e$ecutado un pin* a *oo*le a traves del c%d, y lue*o por %edio de stdout y

su readall !e%os le0do el contenido co%pleto de la salida del co%ando y lo !e%os %ostrado en un%s*bo/

Ta%bi5n, en lu*ar de readall pode%os utiliar read&/(, donde / es el n9%ero de caracteres .ue

.uere%os leerEn un e$e%plo un poco %as 4elaborado4, !are%os lo %is%o .ue antes, pero esta ve !aciendo uso

de read, leeyendo el te/to co%pleto, pero car+cter a car+cter

Códi*o

Set objshell = createobject("%script.shell")Set ping = objshell.exec("cm @c ping %%%.google.com")oif not ping.sto#t.atenofstream then

resp#esta = res#ltao A ping.sto#t.rea(,)elseexit oen if

8/17/2019 Tutorial de Vbscript[1]

http://slidepdf.com/reader/full/tutorial-de-vbscript1 20/24

loopmsgbox resp#esta

Este e$e%plo, es un poco %+s dificil de e/plicar, as0 co%o ta%bi5n lo es entender, por lo .ue .uien

.uiera entenderlo deber+ prestar atención y visualiarlo detenida%ente

En resu%en, e$ecuta%os el pin* a *oo*le, y lue*o nos %ete%os en un bucle infinito &do(, dentro deeste, un an+lisis condicional, si no se alcana el final de la salida &stdoutatendofstrea%(, la variablerespuesta, es i*ual a la propia variable y un car+cter &concatena%os( Ese analisis se continuar+

!aciendo !asta .ue se alcance el final de la lectura, es a!0 donde entonces, pasa%os al else, y el else

dice .ue, se sale del bucle do &e/it do(3or lo .ue en definitiva, el if se e$ecutar+ una y otra ve, e ira *uardando en la variable &respuesta(

letra por letra !asta for%ar el %ensa$e co%pleto, cuando se lle*ue al final, se saldr+ del bucle, y se%ostrara el %s*bo/ con la 4respuesta4 Sn poco %+s co%plicado, pero espero se entienda la idea de

este e$e%plo

!btener el 0oco de una ventana

Variable.appactivate tituloventana

E$e%ploCódi*o

Set objshell = createobject("%script.shell")Objshell.appactivate "Sin tit#lo"

Con esto, obtendr0a%os el foco de una ventana con por e$e%plo, el t0tulo 4'in t0tulo Y loc de

notas4, .ue co%o se !abr+n dado cuenta, es el t0tulo .ue tiene un nuevo bloc de notas

=as consideraciones .ue debe%os de tener en cuenta al utiliar esta función, son las referentes alorden en el .ue realia las co%paraciones en busca de nuestra ventana<

8 3ri%ero busca la ventana .ue tiene el t0tulo e/acto .ue !e%os establecido8 'i no encuentra el t0tulo e/acto, busca a.uella ventana .ue coincida en el principio del t0tulo

8 'i no encuentra ni el t0tulo e/acto, ni ta%poco encuentra t0tulo .ue co%ience co%o el nuestro,

entonces busca a.uel .ue ter%ina co%o el .ue .uere%os8 Ta%bi5n, en el caso de !aber varias ventanas con el %is%o no%bre, ele*ira una cual.uiera al

aar, y le dar+ el foco

$nviar pulsaciones del teclado

Otra de las funciones lla%ativas de este ob$eto, es la función sendkeys .ue nos per%itir+ enviar

pulsaciones de teclado, co%o si estuviese%os escribiendo, as0 .ue !ay .ue tener cuidado con el uso.ue se da, ya .ue una ve e$ecutada, enviar+ las pulsaciones a la ventana activa, por lo .ue si no es

lo .ue deseaba%os, pode%os ter%inar presionando un %ontón de teclas en un pro*ra%a /, con los

resultados .ue ello puede acarrear

Variable.send<e/s teclas

E$e%ploA

Códi*o

Set objshell = createobject("%script.shell")Objshell.seneys "&stas son las teclas"

8/17/2019 Tutorial de Vbscript[1]

http://slidepdf.com/reader/full/tutorial-de-vbscript1 21/24

Este es un e$e%plo %uy si%ple ,.ue ade%+s no reco%iendo probar, ya .ue co%o !e dic!o antes,enviar+ las pulsaciones de las teclas a la ventana activa, y los resultados pueden no 4*ustarnos4

Es por eso .ue a continuación %uestro un e$e%plo %+s claro de esta función, !aciendo uso ade%+s,

de funciones .ue !e%os visto anterior%ente

Códi*o

Set objshell = createobject("%script.shell")Set bloc = objshell.exec("notepa")  $ejec#tamos el bloc e notas4script.sleep 333  $espera e os seg#nosObjshell.appactivate bloc.processi  $ponemos el foco en la ventanael bloc4script.sleep 33  $espera e milesimasObjshell.seneys ";#torial vbs"  $enviamos #n mensaje conseneysObjshell.seneys "B&2;&<"  $l#ego el mensaje anterior #n&2;&<4script.sleep 333  $n#eva espera e osseg#nos

Objshell.seneys "5robano la f#ncion seneys"  $enviamos #naseg#na linea e mensaje

Co%o !ab0a dic!o, en este e$e%plo !e !ec!o uso de al*unas otras fuciones vistas anterior%ente

3ara e%pear !e optado por e$ecutar el bloc de notas a traves de la función e/ec, podr0a optarse por

run, pero este e$e%plo %e serv0a para %ostrarles el uso .ue puede !acerse del processid Co%o

ve%os, a la !ora de obtener el foco de la ventana con appactivate, !e puesto co%o 4t0tulo4 elprocessid, ya .ue vbs nos per%ite !acer uso con$unto de estas dos funciones, para de este %odo

ase*urarnos de .ue el foco se pon*a en la ventana .ue corresonde y no en otra con si%ilar no%bre

@l i*ual .ue antes, podr0a%os poner si%ple%ente el no%bre de la ventana del bloc de notas en lu*arde processid, pero i*ual%ente creo no .uedar+n dudas de por .ue el uso de esta

=ue*o, con respecto al env0o de las teclas, no creo .ue %ereca e/plicación al*una, ya .ue es

si%ple%ente el %ensa$e?pulsación .ue .uere%os env0arI*ual%ente !abr+n visto en %edio del env0o de teclas .ue ta%bi5n esta presente una tecla especial,

el ZENTE[, es por eso .ue de$o a continuación, la tabla con el listado de ar*u%entos para estas

teclasA

Tecla:AC-SAC

:%A- CAS LOC- $L or $L?$O9N A%%O9N$N?%SC>L>O,NS or NS%?L'? A%%O9

N", LOC- A $O9NA "

Argumento@:AC-SAC @:S or @:-S

@:%A-@CASLOC-@$L? or @$L@$O9N@N$@N?% or B@SC@>L@>O,@NS%? or @NS@L'?

@N",LOC-@$N@"

8/17/2019 Tutorial de Vbscript[1]

http://slidepdf.com/reader/full/tutorial-de-vbscript1 22/24

%N? SC%N%>? A%%O9SC%OLL LOC-  ?A:" A%%O9'1

'2'(

@%?SC@%>?@SC%OLLLOC-@?A:@"@'1

@'2@'(

3ara el caso de las teclas 'IFT, CT= y @=T, los ar*u%entos con B, y \ respectiva%ente, nosiendo posible utiliar, la tecla 3T'C, o lo .ue es i*ual, la tecla de 3INT &la .ue se utilia para

capturar pantalla( 3ara utiliar estas tres letras<

Ob$s!ellsendkeys 4B@4Ob$s!ellsendkeys 4:4

Ob$s!ellsendkeys 4\ZT@[4

 

,arpetas (especiales(

Con carpetas especiales %e refiero a a.uellas carpetas co%o 4Inicio4, 4Enviar a4 y 4Favoritos4

entre otras 3ara eso, !are%os uso de la función specialfolders

Variable.special0olders&carpeta'

E$e%ploA

Códi*o

Set objshell = createobject("%script.shell")-sgbox objshell.specialfolers("!estop")

Con lo .ue obtendr0a%os un %s*bo/, con la ruta del escritorio, al*o co%o 4CA"ocu%ents and'ettin*sNovluckerEscritorio4, de i*ual %odo y co%o !e %encionado antes, pode%os acceder a las

rutas de otras carpetas, para lo .ue, conta%os con la si*uiente tabla

Carpetascritorio,en nicioro*ramasnicio

scritorio'avoritos'uentes,is documentosntorno de redmpresorasro*ramas%ecientenviar a,en nicionicio

lantillas

IdentificadorAll"sers$estopAll"sersStart,enuAll"sersro*ramsAll"sersStartup

$estop'avorites'onts,.$ocumentsNet>oodrint>oodro*rams%ecentSend?oStart,enuStartup

 ?emplates

Con esta tabla, solo bastar0a ca%biar 4desktop4 en nuestro e$e%plo, para ver las rutas de otras de las

8/17/2019 Tutorial de Vbscript[1]

http://slidepdf.com/reader/full/tutorial-de-vbscript1 23/24

carpetas disponibles, y nótese ta%bi5n .ue si bien, al*unas carpetas

parecen estar repetidas, al*unos identificadores !acen referencia a las carpetas de todos los

usuarios, y otras a la del usuario activo

!btener variables de sistema

ueno, !abr+n visto entonces, .ue a pesar de la cantidad de carpetas de las .ue se puede obtener la

ruta, !ay al*unas %uy interesantes .ue no aparecen con el specialfolders, co%o ser 4@rc!ivos de

pro*ra%a4, la carpeta de usuario, etc , es por eso .ue entonces, !are%os uso de la funcióne/pandenviron%entstrin*s

Este función, y co%o se !a adelantado en el t0tulo, per%ite acceder a todas las variables del siste%a,co%o ser, S'EN@#E, S'E3OFI=E, CO#3STEN@#E, y todas a.uellas .ue aparecen a

trav5s del co%ando 'ET de %s-dos

 

Variable.e"pandenvironmentstrin#s&=variablesistema='

E$e%ploACódi*o

Set objshell = createobject("%script.shell")-sgbox objshell.expanenvironmentstrings("D5rogramfilesD")

Co%o es de esperarse, en este caso, nos aparecer+ un %ensa$e con la ruta de la carpeta de 4@rc!ivosde pro*ra%a4

,rear accesos directos

ueno, lue*o de !aber visto ya, varias funciones, solo .ueda por ver, la de creates!ortcut, la cualper%ite crear accesos directos a cual.uier aplicación?arc!ivo, .ui+s pareca una función un poco

4insulsa4, pero .ui+s al*uien .uiera por e$e%plo, a*re*ar un acceso directo en la carpeta de Inicio,

y ser+ a.u0 cuando recurra%os a esta funciónEn esta función es necesario definir varios valores, as0 .ue en lu*ar de e/plicarla, pasar5

directa%ente a un e$e%ploA

Códi*o

Set objshell = createobject("%script.shell")Set ellin = objshell.createshortc#t("C:\*cceso irecto.ln")  $creamosel lin

&llin.targetpath = "C:\%ino%s\notepa.exe"  $completamos los valores&llin.%ino%style = ,&llin.hotey = "C;<EFS7G1;F2"&llin.iconlocation = "C:\%ino%s\notepa.exe3"&llin.escription = "*cceso irecto a notepa"&llin.%oringirectory ="C:\"&llin.save  $g#aramos ellin

Creo .ue este e$e%plo alcana para entender sin proble%as esta función, no !ace%os %+s .ue crear

el link, co%pleta%os todos los datos .ue lleva el link, y salva%os

=os ca%pos a co%pletar son los .ue aparecen en cual.uier link &i%a*en ad$unta(, teniendo encuenta de%+s .ue no todos son indispensables

8/17/2019 Tutorial de Vbscript[1]

http://slidepdf.com/reader/full/tutorial-de-vbscript1 24/24

Falta a*re*ar, .ue pueden crearse links a p+*inas )eb]s del si*uiente %odo

E$e%ploA

Códi*o

Set objshell = createobject("%script.shell")

Set %eb#rl = objshell.createshortc#t("C:\google.#rl")4eb#rl.targetpath = http:@@%%%.google.com4eb#rl.save

'i%ple%ente !e%os ca%biado la e/tensión del link a url, en lu*ar de lnk co%o ten0a antes, y la ruta

del link pasa a ser la dirección de la )eb a la .ue .uere%os acceder

ueno, as0 ter%ina la se*unda parte de este tutorial, en donde !e intentado %ostrar a .uienes notienen conoci%ientos, los dos principales ob$etos de la 4librer0a4 de vbs, espero se !aya entendido ,

y co%o !e dado a entender en %i pri%er %ensa$e, la idea es ir a*re*ando nuevo ob$etos,se*ura%ente no a*re*ar5 %+s post, pero si a*re*ar5 y col*ar5 en el 4te%ario4 enlaces para descar*a

de pdf

 

'aludos

,ontinuar>....