You are on page 1of 17

Forodeelhacker.

net
Programacin=>Scripting=>Mensajeiniciadopor:Novluckeren24Septiembre2008,20:30

Ttulo:TUTORIALvbscript
Publicadopor:Novluckeren24Septiembre2008,20:30

TutorialdevbscriptbyNovlucker

Temas
Introduccinpdfclick(http://www.mediafire.com/view/?hephba39e9bq69y)
Operadores
Esctructurasdecontrol
If
Case
For
While
Do
Manejodeobjetos
Filesystemobject(FSO)pdfclick(http://www.mediafire.com/view/?owd55twn65sdr99)
wshShell
wshNetworkpdfclick(http://www.mediafire.com/view/?qvyr4v0yhy31ze6)
Dictionarypdfclick(http://www.mediafire.com/view/?405l6cmjs8po0od)
Commondialogpdfclick(http://www.mediafire.com/view/?zg531ybwzxm7axb)

Seirnaadiendonuevosobjectosparadescargaenpdf

Bueno,primeroaclararqueestetutorial,pretendeexplicardemanerabsicalasdistintasinstruccionesaplicadasenvisualbasicscript(vbsdeaquenms),
paraqueasdeestemodo,todosaquellosinteresadosenestelenguajedescripting,tenganlaposibilidaddecomenzaradesarrollarsuspequeosscripts.

Introduccin:

Paraempezardebemosdecirquelosvbs,talycomolodicesunombre,son"simples"scriptsqueseejecutanpormediodeunintrpreteenelsistema,conlo
quebastarconcrearelcdigoenunsimpleblocdenotas(osimilar)yguardarloconextensin*.vbs,sinnecesidadderealizarningunacompilacin(aunque
existelaposibilidad).

Enestecasoelintrpretees,elWindowsScriptHostdeMicrosoft,porloqueestarpresente(aunqueendistintasversiones)demanerapredeterminada
desdeWin98enadelante,asquepodremoshacerusodeestosarchivosenprcticamente,todoslosWindows.

Sepuededecirquelosvbssonunamejoraconrespectoalosbat,yaqueestospermitenunamayorinteraccinconelsistemaoperativo,ydecirademsque
estelenguaje,esunderivadodeVisualBasic,porloquedesdeunprincipioyaunquedemaneramuchomslimitada,sepodrfamiliarizarcondicholeguaje(la
sintaxisessimilarentodoslosaspectos).

Atenerencuentaantesdecomenzar:

Envbsnoimportanlasmaysculasominsculas
VBscript=vbscript
Paraindicarunfinaldelnea,nosedebedehacermsquepasaralasiguiente(noesnecesarioterminarconporejemplo""comoenjavascript)
Loscomentarios,vanprecedidosdeuna""(comillasimple)
Estoesuncomentario
Noesobligatoriodeclararlasvariables,aunqueesconvenientehacerloparadejarmslegibleelcdigo
SepuedendeclararutilizandoDim,obien,selesdavalordirectamente.
Dimnuestravariable
TambinpuedeserutilizadoOptionexplicitparaas"obligarse"adeclararlasvariables(enlospequeosejemplosloharas)

Enlamayoradelosejemplosutilizarlafuncinmsgbox,lacualseencargademostrarunmensajeenpantalla.

Tiposdedato:

Existenvariostiposdedatosquepuedenmanejarseenvbs,ylosquemsvamosautilizar,son
Booleano,Byte,Fecha,Double,Entero,Enterolargo,Objeto,Single,Cadena.
Todosestosrepresentanvaloresverdadero/falso,fecha/hora,nmerosenteropositivo/negativo,cadenadetexto(nocreonecesitemsexplicacinqueesta).

Operadores:

Tendremosvariostiposdeoperadoresanuestradisposicin.

1.Aritmticos:Suma(+),Resta(),Multiplicacin(*),Divisindecimal(/),Divisinentero(\),Potencia(^),Restodivisin(mod)
2.Comparacin:Igual(=),Distinto(<>),Mayor(>),Menor(<),Menosoigual(<=),Mayoroigual(>=)
3.Lgicos:Y(and),O(or),Xor,No(not)
4.Decadena:Concatenacin(&)

Estoshansidoagrandesrasgos,losoperadoresautilizarenvbs,porloquedespus,yhaciendousodenuestroprximotema(estructurasdecontrol),se
mostrarnalgunosejemplos.

Estructurasdecontrol:

1.IF(condicional)
Estaseutilizaparaevaluar2omsposiblesresultados,envirtuddelcual,setomarndiferentesacciones.

Citar
Dimvalor
Valor=8
Ifvalor<10then
Msgbox"ElvaloresMENORadiez"
Else
Msgbox"ElvaloresMAYORadiez"
Endif

Comoseveenesteejemplosecomienzadeclarandolavariable"valor",luegodeesto,seleasignaelvalor8,yposterioraesto,seevaladichovalor
(haciendousodelosoperadoresdecomparacinvistosanteriormente),porloquesielvaloresmenora10,semostrarunmensajeenpantallaindicandoque
esMENOR,delocontrario,elmensajeindicarMAYOR(enestecasolehabamosasignadoelvalor8,porloquesermenor).


2.Case(condicional)
EnelcasodelIF,sibiennosehamostrado,existelaposibilidaddeanidardosoms,paraasrealizarvariasevaluaciones,peroelcasoesquecuandose
realizanmuchas,elcdigopuedevolversealgoengorroso.Esenestoscasos,donderecurrimosalselectcase.

Citar
Dimnumero
numero=8
Selectcasenumero
case6
msgbox"Elvaloresseis"
case7
msgbox"Elvaloressiete"
case8
msgbox"Elvaloresocho"
Endselect

Aligualqueenelanterior,enesteejemplo,secomienzadefiniendolavariable"numero",yseleasigna8comovalor.Luegoconselectcaseseindicaqueeslo
quesevaarevisar,enestecaso,cuantoeselvalorde"numero",luego,seindicanlasopcionesconuncaseporcadaunadeellas,enestecaso,"case6",ene
casodequeelvalorsea6,"case7",y"case8",paraelcasodequeelvalorsea7y8respectivamente(comosabemoses8),esdecir,"sies6",mensaje"El
valoresseis","sies7",mensaje"Elvaloressiete",y"sies8",mensaje"Elvaloresocho".

3.FOR(bucle)
Elforesutilizadocuandoqueremosrepetirunadeterminadaaccinunciertonmerodeveces.

Citar
Dimi
Fori=1to5step1
Msgbox"Elvalordeies:"&i
Next

Comenzamosdefiniendolavariable"i",luegodeesto,inicializamoselbuclefor,esdecir,decimosquedesde"i"igual1,a"i"igual5,incrementandodea
1,mostraremosunmensajeconlafrase"Elvalordeies:"yluegodeesto,elvalorrealde"i",porloqueencada"paso"quedenuestrobucle,mostraralgo
msomenosas

(http://s2.subirimagenes.com/otros/previo/thump_11574521.jpg)(http://www.subirimagenes.com/otros11157452.html)

Comoven,5mensajes"casi"iguales,yaquelasecuenciaserepite5veces,ylonicoquecambiaeselvalorde"i"(lahemosconcatenadoalmensajeconel
carcter&),yaquevatomandodistintosvaloresencadaunodelos"pasos".

4.FOREACH(bucle)
Elforeach,tienelaparticularidaddequeesunforquerecorretodosloselementosdeunacoleccinovector.Antesdecontinuar,intentarexplicarloqueesun
"array",yaqueserloqueutilicemosenelejemplo.
Unarrayomatriz,esunaestructuradedatosenformadevariable,quepermitealmacenarmsdeunnicovalor,dentrodeunanicavariable.Paraaccedera
cadaunodeestosvalores,sernecesariohacerusodendices.

Citar
Dimnombres(2)
nombres(0)="Martn"
nombres(1)="Pablo"
nombres(2)="Carlos"
Msgboxnombres(1)

Enesteejemplo,sedefinelavariable"nombres"quetendrespaciopara3valores(tenerencuentaquecomienzapor0,poresoqueseponga2),yluego,se
definencadaunodelosvaloresde"nombres".Porltimoutilizamosunmensaje,paramostrarelvalordelndice1delarray,conelsiguienteresultado

(http://s2.subirimagenes.com/otros/previo/thump_11574542.jpg)(http://www.subirimagenes.com/otros21157454.html)

Comoseve,elmensajemuestraelnombre"Pablo"porquealllamaralarray,hemospuestoelndice1,ycomosevecuandolodeclaramos,lehabamos
asignadovalor"Pablo",enelcasodeindicar2enlugardel1,elmensajemostrara"Carlos".
Esperoestohayaquedadolosuficientementeclaro.
Ahora,volviendoalForeach(esperoyanotehayasolvidado),estepodraserutilizadoenelcasodelarray(hayotroscasos).

Citar
Dimnombres
Dimn
nombres=array("Martn","Pablo","Carlos")
Foreachninnombres
Msgboxn
next

Apesardequenoloparezca,esmuysimilaralanterior,yalgunosestarndiciendo,"quetenaqueverelarrayconesto",perosisefijan,solamentehe
mostrado,unasegundamaneradedeclararelarray.
Enestecaso,enlugardeirmetiendocadaunodelosvaloresconsusrespectivosndices,declaroelarrayenunasolalneayvaquedandoorganizadosegnel
ordenenelquemetalosvalores,poreso,"Martn"quedarenellugar0,"Pablo"enellugar1,y"Carlos",enellugar2,aligualqueenelcasoanterior.Esto
conrespectoalarray,ahoraaloquebamos,elforeach.
Enlneassiguientescomenzamosconelfor,ydecimos,porcada"n"(laletra,enestecaso"n"laelegimosnosotros)en"nombres"(esunarrayquecontiene
tres

nombres),mensajeconel"n",oloqueesigual,porcadanombre,enel"contenedor""nombres",mensajeconelnombre,yelresultadoeselsiguiente

(http://s1.subirimagenes.com/imagen/167289511574573.png)(http://www.subirimagenes.com/imagen115745731672895.html)

Tantoenforsimple,comoenelforeach,podemoshacerusodeexitfor,parapararlaejecucindelforcompleta.Paradecirlodeotramanera,conesto
escapamosalfor.
WHILE(bucle)
Elbuclewhile,esutilizadocuandoqueremosqueunadeterminadaaccinserepitamientrasunadeterminadacondicindecumpla.

Citar
Dimnumero
Numero=1
Whilenumero<=10
Msgboxnumero
numero=numero+1
Wend

Comenzamoselejemplodeclarandolavariablenumero,yleasignamosvalor10,luegoejecutamosbucle,mientraselvalorde"numero"seamenoroiguala
10,
mostramosmensajeconelvalordenumero,yademslesumamos1alpropiovalordenumero(deestemodoloutilizamosamododecontador),luegode10
vecesdemostrarmensaje,elvalorde"numero"seriguala11yalverificarselacondicinestanosecumplir,porloqueterminar.

5.DO(bucle)
Elbucledotienevariasopciones,perobsicamenteharalgo,"mientras",o"hastaque"ocurraalgo.

Citar
Do
Msgbox"Estoesunmensaje"
Loop

Estebucle,serepetiralinfinito,porloquemostrarunmensaje,interminablesveces.
Ahorabien,estedo,puedesermodificado,parateneralgomsdecontrolsobrel,yesjustamentehaciendousodeesascondicionesquecomentabaantes,
"mientras",o"hastaque"

Citar
Dima=1
Dountila=10
Msgbox"Estoesunmensaje"
Loop

Estecdigoseresumeenmensajede"Estoesunmensaje"hastaque"a"seaiguala10.
Enlugardeuntilpodrautilizarsewhile,paracambiarlacondicinamensajede"Estoesunmensaje"mientras"a"seadistintade10.

Citar
Dima=1
Dowhilea<>10
Msgbox"Estoesunmensaje"
Loop

Ytambinpuedeutilizarseuntilywhile,antesodespusdeejecutarseelbucle

Citar
Dountil/whilecondicin(esdistintasegnseauntilowhile)
Msgbox"Estoesunmensaje"
Loopuntil/while

Comoseve,estebuclenospermitedarlevariosusossegnnosconvenga,porloqueterminasiendomuyverstilytil.
Aligualqueparalosfor,enelcasodequerersalirdeunbucledo,tambincontamosconunafuncindeescape,enestecaso,exitdo






Asterminaestpequeaintroduccinalasrutinasbsicasdevisualbasicscript,laideaesseguirextendiendoeste"tuto",comocomentarioagregoadems,qu
estelenguajeposeemuchisimasfunciones,lascualesnodetallar,yaqueserainterminable,ademsdequemecentrarmsadelante,enexplicarfunciones
expecificasdeobjetos.

Enelcasodequerermsdocumentacinalrespecto,sepuedendescargarladocumentacinsobrewindowsscripthost,dondetendrnlareferenciaatodaslas
funcionesdelasquepodemoshaceruso.WindowsScript5.6Documentation(http://www.microsoft.com/downloads/details.aspx?familyid=01592C48
207D4BE18A761C4099D7BBB9&displaylang=en)

Ttulo:Tutorialvbscript
Publicadopor:Novluckeren24Septiembre2008,20:31

Manejodeobjetos

Anteriormente,heintentadomostrarlasdiferentesestructurasdecontrolquenospermitenencaminarnuestrosvbs,esporestoqueahora,pasaremosalos
OBJETOS.

Todainteraccindevbsconelsistemasebasaenelmanejodeobjectos(ActiveX),quenosonmsquelibrerasespecializadasyanuestradiposicin,porloque
dependiendodeloquebusquemoshacer,haremosusodeunauotra(mezclandolasennuestrosscripts)
Nota:Noharusodedimparadeclararvariablesenlosejemplos,paraasahorrarespacio.

Losobjetosbsicosdelosquesehaceusosondos:
1.FSO(FileSystemObject):manejodeunidades,archivosycarpetas.
2.WshShell:accesoainformacindesistema,trabajoconelregistro,manejoaccesosdirectos,ejecucindeaplicaciones.

Antesdecontinuardebodeexplicarquealtrabajarconlosobjetos,losmismossedebendedeclarardelasiguientemanera:

Setvariable=createobject(objecto)

Ejemplo:

Setobjfso=createobject("scripting.filssystemobject")
Ahoras,pasamosdirectamentealanlisisdelobjetoFSO.

FSO(FileSystemObject)

Lasdistintasfuncionesquesepuedenrealizaratravsdeesteobjetoson:
Borrar,moverycopiararchivos
Leeryescribirenarchivosdetexto(Crear)
Obtenerymodificaratributosdearchivosycarpetas
Crear,borrar,moverycopiarcarpetas
Obtenerpropiedadesdearchivosycarpetas
Listarsubcarpetas
Listardiscosyparticiones
Obtenerpropiedadesdediscosyparticiones
Obtenerdeterminadasrutasdesistema

Moverarchivos

Objfso.movefileorigen,destino

Ejemplo:
Cdigo

1.Setobjfso=createobject("scripting.filesystemobject")
2.Objfso.movefile"C:\archivo.txt","D:\Carpeta"


Borrararchivos

Objfso.deletefilearchivo

Ejemplo:
Cdigo

1.Setobjfso=createobject("scripting.filesystemobject")
2.Objfso.deletefile"C:\archivo.txt"

Copiararchivos

Objfso.copyfileorigen,destino,sobreescribir

Ejemplo:
Cdigo

1.Setobjfso=createobject("scripting.filesystemobject")
2.Objfso.copyfile"C:\archivo.txt","D:\destino.txt",true

Crearcarpetas

Setvariable=objfso.createfolder(destinocarpeta)

Ejemplo:
Cdigo

1.Setobjfso=createobject("scripting.filesystemobject")
2.Setmicarpeta=objfso.createfolder("C:\carpeta")

Movercarpetas

Objfso.movefolderorigen,destino

Ejemplo:
Cdigo

1.Setobjfso=createobject("scripting.filesystemobject")
2.Objfso.movefolder"C:\Carpeta","D:\Destino"

Borrarcarpetas

Objfso.deletefoldercarpeta

Ejemplo:
Cdigo

1.Objfso.deletefolder"C:\Carpeta"

Copiarcarpetas

Objfso.copyfolderorigen,destino,sobreescribir

Ejemplo:
Cdigo

1.Setobjfso=createobject("scripting.filesystemobject")
2.Objfso.copyfolder"C:\Carpeta","D:\Destino",true

Leeryescribirenarchivos

Paraelmanejodearchivosdetexto,debemosdetenerencuenta,laexistenciaonodelarchivo,yelmodoenelqueaccedemosal.
Obviamente,siunarchivonoexiste,nopodrmosaccederal,yasuvez,siabrimosunarchivoenmododelctura,nuncapodremosescribirdentro.

Creararchivosdetextoyescribirenellos

Setvariable=objfso.createtextfile(ruta,sobreescribir)

Ejemplo:
Cdigo

1.Setobjfso=createobject("scripting.filesystemobject")
2.Setarchivotexto=objfso.createtextfile("C:\archivo.txt",true)'creamoselarchivo
3.archivotexto.writeline"Esteeseltextoqueestoyescribiendo"'escribimosunalinea
4.archivotexto.writeblanklines(2) 'escribimos2lineasenblanco
5.archivotexto.writeline"Aquimastexto" 'escribimosotralineadetexto
6.archivotexto.close 'cerramoselarchivo

Notesequealcomenzar,hemoscreadoelarchivoylohemosasignadoaunavariable,luegohemosutilizadoelidentificadordearchivo(variable),paraescribir
dentrodel,enestecaso,hemosutilizadowriteline,queescribeunalnea,yagregaunretornodecarroparaquesivolvemosaescribir,lohagamosenuna
nuevalnea,encambio,siensulugar,utilizamoswrite,elresultado,serquenohabrsaltodelnea,porloquetodaslasoracionesiranquedandounadetrs
delaotra.Porltimo,hemoscerradoelarchivo.

Abrirarchivosdetextoyescribirenellos

Setvariable=objfso.opentextfile(ruta,modo,creacin)

Ejemplo:
Cdigo

1.Setobjfso=createobject("scripting.filesystemobject")
2.Setarchivotexto=objfso.opentextfile("C:\archivo.txt",8,true) 'abrimoselarchivo
3.archivotexto.writeline"Esteeseltextoqueestoyescribiendo" 'escribimosunalinea
4.archivotexto.close 'cerramoselarchivo

Comosepuedever,alabrirelarchivo,hemosindicadolaruta,elmodo8queseutilizaparaappendingoescrituraalfinaldearchivo,ytrue,quequieredecir
queencasodequenoexistaelarchivosecree,esdecirquedeestemodo,nosoloabrimoselarchivo,sinoquedenoexistir,dichoarchivosercreadoenel
proceso.

Paratenerencuenta,losmodosenlosquesepuedeabrirunarchivoson:
1ModoLECTURA
2ModoESCRITURA(escribealprincipio)
8ModoAPPENDING(escribealfinal)

Comosepuedever,alabrirelarchivo,hemosindicadolaruta,elmodo8queseutilizaparaappendingoescrituraalfinaldearchivo,ytrue,quequieredecir
queencasodequenoexistaelarchivosecree,esdecirquedeestemodo,nosoloabrimoselarchivo,sinoquedenoexistir,dichoarchivosercreadoenel
proceso.

Leerdesdearchivosdetexto

Ascomoabrimosarchivosypodemosescribirenellos,tambinexistelaposibilidaddeleerdesdeellos,paralocualutilizaremosreadline,yreadall.
Comosepuedeimaginar,conreadlineiremosleyendounaaunalaslneasdelarchivo(cadavezquepongamosreadlineleeremossolouna),coneste,leemos
unalnea,yelpunterosesituaalfinaldelalnea,paraquealaprximaejecucindeestafuncin,sealalneasiguientelaquesealeda.Conreadallencambio
leeremoseltotaldearchivo.
Existeademsunafuncinllamadaskipline,conlacualsaltaremoslalecturadeunalnea.

Ejemplo:
Cdigo

1.Setobjfso=createobject("scripting.filesystemobject")
2.Setarchivotexto=objfso.opentextfile("C:\archivo.txt",1) 'abrimoselarchivo
3.msgboxarchivotexto.readline 'leemosunalinea,laprimera
4.archivotexto.skipline 'saltamosunalinea
5.msgboxarchivotexto.readline 'leemosunalinea,latercera
6.archivotexto.close 'cerramoselarchivo

Atributosdearchivosycarpetas

Acontinuacinexplicarelmtodomedianteelcual,sepuedeobtener,obiencambiar,losatribuosdearchivosycarpetas(esprcticamenteigualparaambas
cosas)

Obteneratributos

Setvariable=objfso.getfile(ruta)
variable.attributes

Ejemplo:
Cdigo

1.Setobjfso=createobject("scripting.filesystemobject")
2.Setarchivo=objfso.getfile("C:\tutorial.pdf")'obtenemoselcontrolsobreelarchivopdf
3.Msgboxarchivo.attributes 'mensajeconlosattributosdelarchivo

Enesteejemplovemosqueluegodedeclararelobjeto,loquehacemosesobtenerelcontroldelelarchivotutorial.pdf,paralocualutilizamosgetfile,y
asignamoselarchivoalavariablearchivo.Luego,yyaconelarchivoenlavariable,podemosutilizarlodirectamenteparamostrarsusatributos,quenoser
msqueunnmeroqueenglobartodaslasconstantesdelosatributos.
Lasconstantesquehacenreferenciaalosatributosdearchivoson:

Valor Atributo
0 Normal
1 SoloLectura
2 Oculto
4 Sistema
8 Letradedisco
16 Carpeta/directorio
32 Archivo
64 Linkoaccesodirecto
128 Comprimido

Comocomentabaantes,attributesdevolverunvalornicoqueserlasumatoriadecadaunodelosvaloresparacadaatributodelarchivo.
Comoejemplo:
Unarchivoquetengaatributosdesololectura,oculto,desistema,ydearchivo,tendrunvalorde1+2+4+32=39

Cambiaratributos

Setvariable=objfso.getfile(ruta)
variable.attributes=sumaatributos

Ejemplo:
Cdigo

1.Setobjfso=createobject("scripting.filesystemobject")
2.Setarchivo=objfso.getfile("C:\tutorial.pdf")'obtenemoselcontrolsobreelarchivopdf
3.archivo.attributes=34 'attributodearchivoyoculto

Elcambiaratributosconsistesimplementeenasignarunvaloraattributes.
Enelejemploanteriorhepuestocomovalor34querepresentaatributosdearchivoyoculto.

Propiedadesdearchivosycarpetas

Ascomopodemosobtenerymodificarlosatributosdelosarchivosycarpetas,podemosaccederadeterminadaspropiedadesdelosmismos,entreellas:
Nombrename
Nombrecortoshortname
TamaoSize
Rutacompletapath
Rutacortashortpath
Fechadecreacin/modificacin/ltimoaccesodatecreated,datelastmodified,datelastaccessed
Tipodearchivotype
Carpetacontenedoraparentfolder

Estassonlasprincipalespropiedadesalasquepodemosacceder,locualsehardelasiguienteforma:

Setvariable=objfso.getfile(ruta)
Msgboxvariable.propiedad

Ejemplo:
Cdigo

1.Setobjfso=createobject("scripting.filesystemobject")
2.Setarchivo=objfso.getfile("C:\tutorial.pdf") 'obtenemoselcontrolsobreelarchivopdf
3.Msgboxarchivo.size 'tamanodelarchivoenbytes

Paraobtenerotraspropiedades,simplementeseracuestindecambiar"size"poralgunadelasotraspropiedadesalasquetenemosacceso(lesrecomiendo
probarconcadaunaparaverlosresultados),ydeigualmanera,seharaconcarpetasenlugardearchivos,paraloquesolamentetendramosquecambiar
getfile,porgetfolder.

Listarsubcarpetas

Conlistarsubcarpetas,nosreferimosa,accederalacoleccindesubcarpetasdeunacarpeta"X",paratrabajarconcadaunadeellasdemaneraindependiente.
Cuandohablamosdecoleccin,hacemosreferenciaaunarray,enelqueestntodosloselementoscontenidosenundeterminado"listado".

Setvariable=objfso.getfolder(ruta)
Setsubvariable=variable.subfolders

Ejemplo:
Cdigo

1.Setobjfso=createobject("scripting.filesystemobject")
2.Setmicarpeta=objfso.getfolder("C:\Carpeta") 'obtenemoselcontrolsobrelacarpeta
3.Setsubcarpetas=micarpeta.subfolders 'obtenemoslacolecciondesubcarpetas
4.Foreachsinsubcarpetas 'porcadacarpeta(s)enlacoleccion(subcarpetas)
5.Msgboxs.name 'mensajeconelnombre
6.Next 'pasamosalasiguientesubcarpeta

Bueno,comoseveenestecaso,elaccederalassubcarpetasnoestotalmentedirecto,sinoque,enunprincipio,obtenemoslacoleccin(array)decarpetas,
paraluegotrabajarconcadaunadeellaspormediodeunforquerecorretodalacoleccin.
Allistarsubcarpetas,sedebedeternerencuentaadems,quelacoleccin,solamentecontiene,lascarpetasdelprimernivel,ynolasqueseencuentranenlos
nivelesconsiguientes,paraquequedemsclaro:

C:\carpeta
C:\carpeta\nivel1
C:\carpeta\nivel1\nivel2

Silistamoslacoleccindesubcarpetasenlacarpeta"C:\carpeta",obtendremostodaslasdelnivel1,peronolasdelnivel2,paraeso,deberamosde
implementarotroforquehagareferenciaaestas.

Listardiscos/particiones

Aligualqueparalistarsubcarpetas,paralistardiscosyparticionesloharemosatravesdeunacoleccin,porloqueenrealidad,sermuysimilaralpunto
anterior.

Setvariable=objfso.getfolder(ruta)
Setdiscos=variable.drives

Ejemplo:
Cdigo

1.Setobjfso=createobject("scripting.filesystemobject")
2.Setdiscos=objfso.drives 'obtenemoslacolecciondediscos
3.Foreachdindiscos 'porcadadisco(d)enlacoleccion(discos)
4.Msgboxd.driveletter 'mensajeconlaletradedisco
5.Next 'pasamosalsiguientedisco

Comoyasehabadicho,elmtododelistarlosdiscosyparticiones,eselmismoqueparaobtenerlassubcarpetasdeunacarpeta,porloquenodeberade
presentarningnproblemaelhacerlo.
Tambinaclarar,queenelanteriorejemplo,soloheincludounapropiedadquenosehabavistoanteriormente,yestaesladedriveletter,yquecomoyase
habrndadocuenta,hacereferenciaalaletraquetieneasignadoeldiscooparticinenelsitema,porloqueunavezmencionadoesto,pasaremosjustamente,
identificar,cualessonlaspropiedadesdediscoalasquetendremosacceso.

Propiedadesdedisco

Comohemosvistoenelanteriorpunto,atravesdelobjectoFSOesposibleaccederalacoleccindediscos,ascomoasuspropiedades,siendoestas
propiedades,las
siguientes:
Letradriveletter
Nombredeldiscovolumename
Espaciodisponibleavailablespace
Espaciolibrefreespace
Espaciototaltotalsize
Disponibilidadisready
Rutapath
Sistemadeficheros(NTFS,FAT,CDFS)filesystem
Carpetaprincipalrootfolder
Nmerodeserieserialnumber
Nombrecompartidosharename
Tipodediscodrivetype

Ejemplo,nopondrenestecaso,yaqueesseraigualalquehepuestoanteriormente.

Porotraparte,solamenteprofundizarenunadelaspropiedadesdelosdiscos(creoquelasotrassonfacilmenteidentificables),yesjustamente,laltimaque
heenumerado,drivetype.
Eltipodediscodeundisco(valgalaredundancia),puedeestarentrelossiguientes:

Valor Tipo
0 Unknown/Desconocido
1 Removable/Removible
2 Fixed/Rgido
3 Network/Red
4 CDRom
5 RAMDisk

Tambinhedeacotar,queladisquetera(UnidadA),esreconocidacomodiscoextrable,ascomotambinocurre,conlasunidadesvirtuales,ejaquellas
carpetasmontadasconelcomandoSUBSTdemsdos.

Rutasdecarpetas

Porltimo,peronomenosimportante,debodecomentarqueelobjectoFSO,permiteobtenerlarutadetresdelascarpetasmsimportantesdelsistema,como
loson:
Windows(0)
System32(1)
Temp(2)

Paraaccederaellas,haremosusodelafuncingetspecialfolder.

Setvariable=objfso.getspecialfolder(constante)

Ejemplo:
Cdigo

1.Setobjfso=createobject("scripting.filesystemobject")
2.Setmicarpeta=objfso.getspecialfolder(0) 'obtenemoselcontrolsobrelacarpeta
3.Msgboxmicarpeta.path 'mensajeconlarutadelacarpeta
4.

Comoseveenejemplo,enestecaso,noshacemosconelcontroldelacarpetadewindows,yluegomostramossuruta,parapoderaccederalascarpetas,las
constantessonlasqueheindicadoenunentreparentesisenunprincipio,alnombrarlascarpetas.
Bueno,conestohemosterminadoconelobjetoFSO,pasemosentoncesalsegundoyprincipalobjeto,lashell.

Shell(wscript.shell)

Atravsdeesteobjetopodemosentreotrascosas:
Mostrarmensajestemporizados
Leer,borrar,yescribirenelregistrodewindows
Ejecutaraplicaciones(dosmtodos)
Obtenerelfocodeunaventana
Enviarpulsacionesdeteclado
Accedermultiplescarpetasdesistema
Obtenervariablesdelsistema
Crearaccesosdirectos

Mostrarmensajestemporizados

Estaeslamenosimportantedetodaslasfuncionesdeesteobjeto,peronodejadesertilenalgunasocasiones,sobretodo,sinoqueremosqueunprocesose
bloquee,soloporintentarmostrarunmensaje.Paraquequedemsclaro,alolargodetodoslosejemploquehepuesto,heidomostrandodeterminados
mensajesatravesdelafuncindemsgbox(opcinbsica).Losmensajesgeneradoscondichafuncin,nosalendepantalla,hastabienelusuario,nodaclicken
el/losbotonesquetieneelcuadrodemensaje,porloqueencasodeutilizarunmensajedeestetipo,laejecucindenuestroscript,separarhastabienesteno
salgadepantalla.
Peroenlugardeutilizarestetipodemensaje,podemoshacerusodeunamensajepopup,lacualdesaparecersolaalcabodeltiempoquehayamos
especificado,luegodelocual,continuarlaejecucindelscript.
Modoenelqueseempleaestaventana:

Variablemensaje=variable.popup(texto,tsegundos,ttulo,botones)

Ejemplo:
Cdigo

1.Setobjshell=createobject("Wscript.shell")
2.rmensaje=objshell.popup("Esteesunmensajedeprueba",3,"MensajePopup",64)
3.

Elresultado

(http://s2.subirimagenes.com/otros/previo/thump_11574604.jpg)(http://www.subirimagenes.com/otros41157460.html)

Paraempezar,sepuedeapreciarqueelobjetoshell,sedeclaraconWscript.shell,ybueno,loreferentealmensaje,creoqueunaimagendicemsquemil
palabras,hemosmostradounmensajeenpantalla,elcualalcabode3segundos,desapareceraydarpasoalrestodenuestroscript.
Sisehamiradodetenidamente,senotarqueparalos"botones"hepuestoelvalor64,estevalor,hacereferenciaalasumatoriadelosbotoneseiconosque
aparecenenlaventanademensaje,siendolosmismos:

Botones:

Valor Descripcin
0 OK
1 OKyCancelar
2 Abortar,ReintentareIgnorar
3 Si,NoyCancelar
4 SiyNo
5 ReintentaryCancelar

Iconos

Valor Descripcin
16 Parar/Error
32 Pregunta
48 Exclamacin
64 Informacin

Enelcasodemimensaje,el64correspondealasumadelbotndeok(cero)yeliconodeinformacin(64)
SiquisieramosmostrarunmensajedeSi,NoyCancelar,conuniconodepregunta,deberamosdeponercomovalorelnmero35(3+32).

(http://s2.subirimagenes.com/otros/previo/thump_11574625.jpg)(http://www.subirimagenes.com/otros51157462.html)

Porotrolado,tambinvemosenelejemplocomoelpopup,seguardaenunavariabledenombrermensaje.Endichavariable,seguardaelvalordelarespuesta
dadaalmensaje,esdecir,paraelcasodeunmensajeconlosbotonesdeSi,NoyCancelar,lavariablermensajeguardaraelvalordecualdeesosbotonesfue
presionadoporelusuario,siendoestaslasposibilidades:

Valor Descripcin
1 OK
2 Cancelar
3 Abortar
4 Reintentar
5 Ignorar
6 Si
7 No

Esdecir,queencasodequelapersonapresioneSi,elresultadoobtenidoser6,estopuedeservirnosdemuchosiqueremosdarleunpocodeinteractividada
nuestrosscriptsytomardiferentescaminosenvirtuddelasrespuestasdelosusuarios,locualpuedeserutilizadojuntoalasfuncionesdemsgbox(paraesta
tambinvalenlosbotoneseiconos)einputbox,aunqueapesardelamencinlasveremosendetalle,yaquenodependendeningnobjeto,ysondefcil
comprensin.

Leer,borrarymodificarelregistrodewindows

Sinlugaradudas,esunadelasfuncionesmsatractivasdeesteobjeto,ysuimplementacinnoimplicaningunadificultad,yanas,laimplementacindeesta
funcin,nopresentaningunadificultad.

Leervalores

variable.regread(llavederegistro)

Ejemplo:
Cdigo

1.Setobjshell=createobject("wscript.shell")
2.Msgboxobjshell.regread("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\ShellFolders\MyPictures")
3. 'vatodoenunamismalinea,lallaveesmuylarga

Sencillodeentender,atravsdelobjetoshellllamamosalafuncinregread,encargadadeleerlasllavesdelregistro,enestecaso,heoptadoporunallaveun
tantolarga,peroquecontienelarutadelacarpetade"misimgenes",aligualqueenotrosejemplos,muestroelvalorpormediodeunmsgbox,perocomoen
todosloscasos,esposibleguardarestevalorenunavariableparaluegotrabajarconella.

Borrarvalores

variable.regdelete(llavederegistro)

Ejemplo:
Cdigo

1.Setobjshell=createobject("wscript.shell")
2.objshell.regdelete("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\ShellFolders\MyPictures")

Aligualqueparaleer,elborrarcadenasnotienenadadeespecial,sinoquesimplementedebemosdellamaralafuncinregdeleteparadeshacernosdela
cadenaencuestin.

Escribir/modificarelregistro

Algoquedeseguroleinteresaravarios.

variable.regwrite(llavederegistro,valor,tipodedato)

Ejemplo:
Cdigo

1.Setobjshell=createobject("wscript.shell")
2.objshell.regwrite("HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableTaskMgr",1,"REG_DWORD")
3. 'vatodoenunamismalinea,lallaveesmuylarga

Enesteejemplo,estaramosmodificandolallavedelregistroquedeshabilitaeladministradordetareas(taskmgr).
Losdatosquedebemosdepasarleaestafuncinsonlallaveamodificar/crearclaroesta,elvalorqueledaremos,enmiejemplohasido1,yeltipodedatos
queestamosingresando.
Comomuchossabrn,elregistrodewindowssoportaciertostiposdedatosenlasdiferentesclavesdelasquehaceuso,asaber:

Tipo Descripcin
REG_SZ Cadena
REG_DWORD Numrico
REG_BINARY Binario
REG_EXPAND_SZ Unacadenaexpandible
Existeunquintotipodedatos,elREG_MULTI_SZ,peronoessoportadoporestafuncin.

Tenerencuentaqueregwritepuedetenerproblemasconcadenasdemasiadolargas,yconsiderartambin,quetalcomohepuestoenelttulo,regwritecrear
unallaveencasodenoexistir,ylamodificarencasodequeyaestpresente.
Tambinhederecomendarqueencasodetrabajarconelregistrosehadetenermuchocuidado,yquequerersedejarelcodemslegible,seutilicenlas
siguientes
abreviaciones(lohehechoenmiejemplo):

Llaveprincipal Abreviacin
HKEY_CURRENT_USER HKCU
HKEY_LOCAL_MACHINE HKLM
HKEY_CLASSES_ROOT HKCR
HKEY_USERS HKEY_USERS
HKEY_CURRENT_CONFIG HKEY_CURRENT_CONFIG

Ejecutaraplicaciones

Comohecomentadoantes,atravesdeesteobjetoexistendosmtodosdiferentesdeejecutaraplicaciones,loscualesadems,tendrndiferentesopcionesy
resultados.

MtodoRun

Esteeselmssimpleyusadodelosdosmtodos.

variable.runrutaprograma,estadoventana,espera

Ejemplo:
Cdigo

1.Setobjshell=createobject("wscript.shell")
2.Objshell.run"notepad",1,true

Enestecasoejecutamoselblocdenotas,enmodonormal,yestablecemos,queelscriptsepause(true)hastaquesecierrelaaplicacin(notepad).
Losestadosenlosquesepuedeabrirlaventana,vandel0al10,pasandoporoculto,maximizadoyminimizado,entreotros,peropasardeexplicarcadauno
deellosyaqueresultamejoropcinprobaryverelresultado,queloquepodraserlaexplicacin.
Loquesicabedestacar,eselestado0(cero)ovbhide,queejecutaunaaplicacinenmodooculto,sinmostrarningntipodeventana.Probarporejemplo
sustituyendoelnmero1porvbhideenelejemploquehedejado,paraver(enrealidadnosevernada)comoseejecutaelnotepadsinmostrarninguna
ventana(siseverelprocesoeneladministradordetareas).
Tenerencuentaadems,queelestadodelaventana,ylaesperadelprograma,sontotalmenteopcionales,asqueconponersimplementeobjshell.run
"notepad"hubiesealcanzado.

MtodoExec

Estemtodoesmuysimilaralanterior,solamentequenospermiteunmayorcontrolsobrelaaplicacinqueestamoscorriendo,conlaexcepcindequenonos
permiteseleccionarestadodelaventana.

variable.exec(rutaprograma)

Ejemplo:
Cdigo

1.Setobjshell=createobject("wscript.shell")
2.Objshell.Exec("notepad")

Comovemos,elmtodoenelqueseejecutalaaplicacinespracticamenteigualalanterior,solamentehemossutitudorunporexecynohemospasadoningn
parmetro

alafuncin,peroahoraveamosqueesloqueohacediferentedelotromtodo.
Status
ProcessID
Terminate
Stdin,Stdout,Stderr

Estasseranlasfuncionesquediferencianelexecdelrun,todasestasseaplicansobrelaaplicacin/comandoqueestamosejcutando,porloque,parahaceruso
deestafuncionalidad,esnecesarioejecutarlaaplicacin,yasignarlamismaaunavariableparaluegotrabajaratravesdeesta.
Veamosesto,juntoalaexplicacindestatusyprocessid
Elstatusidentificaelestadodelaaplicacinejecutada,0(cero)representaunaaplicacinenejecucin,y1(uno),indentificaquelaaplicacinfuecerradaysu
procesoyanoseencuentrapresente.
Conrespectoalprocessid,creoquesaltaalavistalafuncindelmismo,noesmsqueelidentificadordeproceso(PID).

Ejemplo:
Cdigo

1.Setobjshell=createobject("wscript.shell")
2.Setbloc=Objshell.Exec("notepad")
3.Msgboxbloc.status
4.Msgboxbloc.processid

Enesteejemplo,ejecutamoselblocdenotas,asignandosuprocesoalavariable"bloc",yluegomostramosdosmensajes,unoconelstatus(deberadeser0),y
otroconelnmerodeproceso.
Lafuncinstatusnosservirendefinitiva,parapodermonitorearnuestroproceso,yrealizarunadeterminadaaccinenfuncindesipermaneceabierto,obien,
lohancerrado.

Ejemplo:
Cdigo

1.Setobjshell=createobject("wscript.shell")
2.Setbloc=objshell.Exec("notepad")
3.Dowhilebloc.status=0
4. Wscript.sleep200 'sirveparahacerunapausadexmilesimasdesegundo
5.loop
6.msgbox"Sehacerradoelblocdenotas"

Pasemosentoncesaterminate

Estafuncin,permiteterminarelprocesoquehabamosiniciado,porloqueporsunombreerafcilpredecirlo

Ejemplo:
Cdigo

1.Setobjshell=createobject("wscript.shell")
2.Setbloc=objshell.Exec("notepad")
3.Wscript.sleep5000 'Pausade5000milesimas,o5segundos
4.bloc.terminate

Abrimoselblocdenotas,realizamosunaesperade5segundos,ycerramoselblocdenotas,fcil.

Pasandoahoraalasltimasfuncionesdeexecstdin,stdout,stderr,debodeaclararqueestasfuncionespuedenserutilesalahoradetrabajarenlneade
comandos,perodadoqueenlneadecomandoshaymejoresmaneras(amicriterio)dehacerlo,obviarlaexplicacindedosdeestasfunciones,ysololedar
importanciaastdoutquesipuedefacilitarnoslatareaenlaejecucindecomandosdemsdos.

Stdoutnosmuestralasalidadeunloscomandosejecutadosatravesdeexec,yparaqueseentiendamejor,pasaredirectamenteaun..

Ejemplo:
Cdigo

1.Setobjshell=createobject("wscript.shell")
2.Setping=objshell.exec("cmd/cpingwww.google.com")
3.Msgboxping.stdout.readall

Elresultado:

(http://s2.subirimagenes.com/otros/previo/thump_11574676.jpg)(http://www.subirimagenes.com/otros61157467.html)

Enesteejemplo,hemosejecutadounpingagoogleatravesdelcmd,yluegopormediodestdoutysureadallhemosledoelcontenidocompletodelasalidade
comandoylohemosmostradoenunmsgbox.
Tambin,enlugardereadallpodemosutilizarread(x),dondexeselnmerodecaracteresquequeremosleer.
Enunejemplounpocomas"elaborado",haremoslomismoqueantes,peroestavezhaciendousoderead,leeyendoeltextocompleto,perocarcteracarcter.

Cdigo

1.Setobjshell=createobject("wscript.shell")
2.Setping=objshell.exec("cmd/cpingwww.google.com")
3.do
4.ifnotping.stdout.atendofstreamthen
5.respuesta=resultado&ping.stdout.read(1)
6.else
7.exitdo
8.endif
9.loop
10.msgboxrespuesta

Esteejemplo,esunpocomsdificildeexplicar,ascomotambinloesentender,porloquequienquieraentenderlodeberprestaratencinyvisualizarlo
detenidamente.
Enresumen,ejecutamoselpingagoogle,yluegonosmetemosenunbucleinfinito(do),dentrodeeste,unanlisiscondicional,sinosealcanzaelfinaldela
salida(stdout.atendofstream),lavariablerespuesta,esigualalapropiavariableyuncarcter(concatenamos).Eseanalisissecontinuarhaciendohastaquese
alcanceelfinaldelalectura,esahdondeentonces,pasamosalelse,yelelsediceque,sesaledelbucledo(exitdo).
Porloqueendefinitiva,elifseejecutarunayotravez,eiraguardandoenlavariable(respuesta)letraporletrahastaformarelmensajecompleto,cuandose
lleguealfinal,sesaldrdelbucle,ysemostraraelmsgboxconla"respuesta".Unpocomscomplicado,peroesperoseentiendalaideadeesteejemplo.

Obtenerelfocodeunaventana

Variable.appactivatetituloventana

Ejemplo.
Cdigo

1.Setobjshell=createobject("wscript.shell")
2.Objshell.appactivate"Sintitulo"

Conesto,obtendramoselfocodeunaventanaconporejemplo,elttulo"SinttuloBlocdenotas",quecomosehabrndadocuenta,eselttuloquetieneun
nuevoblocdenotas.
Lasconsideracionesquedebemosdetenerencuentaalutilizarestafuncin,sonlasreferentesalordenenelquerealizalascomparacionesenbuscadenuestra
ventana
Primerobuscalaventanaquetieneelttuloexactoquehemosestablecido
Sinoencuentraelttuloexacto,buscaaquellaventanaquecoincidaenelprincipiodelttulo
Sinoencuentranielttuloexacto,nitampocoencuentrattuloquecomiencecomoelnuestro,entoncesbuscaaquelqueterminacomoelquequeremos.
Tambin,enelcasodehabervariasventanasconelmismonombre,elegiraunacualquieraalazar,yledarelfoco.

Enviarpulsacionesdelteclado

Otradelasfuncionesllamativasdeesteobjeto,eslafuncinsendkeysquenospermitirenviarpulsacionesdeteclado,comosiestuviesemosescribiendo,as
quehayquetenercuidadoconelusoqueseda,yaqueunavezejecutada,enviarlaspulsacionesalaventanaactiva,porloquesinoesloquedeseabamos,
podemosterminarpresionandounmontndeteclasenunprogramax,conlosresultadosqueellopuedeacarrear.

Variable.sendkeysteclas

Ejemplo:
Cdigo

1.Setobjshell=createobject("wscript.shell")
2.Objshell.sendkeys"Estassonlasteclas"

Esteesunejemplomuysimple,queademsnorecomiendoprobar,yaquecomohedichoantes,enviarlaspulsacionesdelasteclasalaventanaactiva,ylos
resultadospuedenno"gustarnos".
Esporesoqueacontinuacinmuestrounejemplomsclarodeestafuncin,haciendousoadems,defuncionesquehemosvistoanteriormente.

Cdigo

1.Setobjshell=createobject("wscript.shell")
2.Setbloc=objshell.exec("notepad") 'ejecutamoselblocdenotas
3.Wscript.sleep2000 'esperadedossegundos
4.Objshell.appactivatebloc.processid 'ponemoselfocoenlaventanadelbloc
5.Wscript.sleep200 'esperademilesimas
6.Objshell.sendkeys"Tutorialvbs" 'enviamosunmensajeconsendkeys
7.Objshell.sendkeys"{ENTER}" 'luegodelmensajeanterior,unENTER
8.Wscript.sleep2000 'nuevaesperadedossegundos
9.Objshell.sendkeys"Probandolafuncionsendkeys" 'enviamosunasegundalineademensaje

Comohabadicho,enesteejemplohehechousodealgunasotrasfucionesvistasanteriormente.

Paraempezarheoptadoporejecutarelblocdenotasatravesdelafuncinexec,podraoptarseporrun,peroesteejemplomeservaparamostrarleseluso
quepuedehacersedelprocessid.Comovemos,alahoradeobtenerelfocodelaventanaconappactivate,hepuestocomo"ttulo"elprocessid,yaquevbsnos
permitehacerusoconjuntodeestasdosfunciones,paradeestemodoasegurarnosdequeelfocosepongaenlaventanaquecorresondeynoenotracon
similarnombre.Aligualqueantes,podramosponersimplementeelnombredelaventanadelblocdenotasenlugardeprocessid,peroigualmentecreono
quedarndudasdeporqueelusodeesta.

Luego,conrespectoalenvodelasteclas,nocreoquemerezcaexplicacinalguna,yaqueessimplementeelmensaje/pulsacinquequeremosenvar.
Igualmentehabrnvistoenmediodelenvodeteclasquetambinestapresenteunateclaespecial,el{ENTER},esporesoquedejoacontinuacin,latablacon
ellistadodeargumentosparaestasteclas:

Tecla Argumento
BACKSPACE {BACKSPACE},{BS},or{BKSP}
BREAK {BREAK}
CAPSLOCK {CAPSLOCK}
DELorDELETE {DELETE}or{DEL}
DOWNARROW {DOWN}
END {END}
ENTER {ENTER}or~
ESC {ESC}
HELP {HELP}
HOME {HOME}
INSorINSERT {INSERT}or{INS}
LEFTARROW {LEFT}
NUMLOCK {NUMLOCK}
PAGEDOWN {PGDN}
PAGEUP {PGUP}
PRINTSCREEN {PRTSC}
RIGHTARROW {RIGHT}
SCROLLLOCK {SCROLLLOCK}
TAB {TAB}
UPARROW {UP}
F1 {F1}
F2 {F2}
Fx {Fx}

ParaelcasodelasteclasSHIFT,CTRLyALT,losargumentoscon+,^y%respectivamente,nosiendoposibleutilizar,lateclaPRTSC,oloqueesigual,latecla
dePRINT(laqueseutilizaparacapturarpantalla).Parautilizarestastresletras
Objshell.sendkeys"+A"
Objshell.sendkeys"^V"
Objshell.sendkeys"%{TAB}"

Carpetas"especiales"

Concarpetasespecialesmerefieroaaquellascarpetascomo"Inicio","Enviara"y"Favoritos"entreotras.Paraeso,haremosusodelafuncinspecialfolders

Variable.specialfolders(carpeta)

Ejemplo:
Cdigo

1.Setobjshell=createobject("wscript.shell")
2.Msgboxobjshell.specialfolders("Desktop")

Conloqueobtendramosunmsgbox,conlarutadelescritorio,algocomo"C:\DocumentsandSettings\Novlucker\Escritorio",deigualmodoycomohe
mencionadoantes,podemosaccederalasrutasdeotrascarpetas,paraloque,contamosconlasiguientetabla.

Carpeta Identificador
Escritorio AllUsersDesktop
MenInicio AllUsersStartMenu
Programas AllUsersPrograms
Inicio AllUsersStartup
Escritorio Desktop
Favoritos Favorites
Fuentes Fonts
Misdocumentos MyDocuments
Entornodered NetHood
Impresoras PrintHood
Programas Programs
Reciente Recent
Enviara SendTo
MenInicio StartMenu
Inicio Startup
Plantillas Templates

Conestatabla,solobastaracambiar"desktop"ennuestroejemplo,paraverlasrutasdeotrasdelascarpetasdisponibles,yntesetambinquesibien,alguna
carpetas

parecenestarrepetidas,algunosidentificadoreshacenreferenciaalascarpetasdetodoslosusuarios,yotrasaladelusuarioactivo.

Obtenervariablesdesistema

Bueno,habrnvistoentonces,queapesardelacantidaddecarpetasdelasquesepuedeobtenerlaruta,hayalgunasmuyinteresantesquenoaparecenconel
specialfolders,comoser"Archivosdeprograma",lacarpetadeusuario,etc.,esporesoqueentonces,haremosusodelafuncinexpandenvironmentstrings.
Estefuncin,ycomosehaadelantadoenelttulo,permiteaccederatodaslasvariablesdelsistema,comoser,USERNAME,USERPROFILE,COMPUTERNAME,y
todasaquellasqueaparecenatravsdelcomandoSETdemsdos.

Variable.expandenvironmentstrings(%variablesistema%)

Ejemplo:
Cdigo

1.Setobjshell=createobject("wscript.shell")
2.Msgboxobjshell.expandenvironmentstrings("%Programfiles%")

Comoesdeesperarse,enestecaso,nosaparecerunmensajeconlarutadelacarpetade"Archivosdeprograma".

Crearaccesosdirectos

Bueno,luegodehabervistoya,variasfunciones,soloquedaporver,ladecreateshortcut,lacualpermitecrearaccesosdirectosacualquieraplicacin/archivo,
quizsparezcaunafuncinunpoco"insulsa",peroquizsalguienquieraporejemplo,agregarunaccesodirectoenlacarpetadeInicio,yseraqucuando
recurramosaestafuncin.
Enestafuncinesnecesariodefinirvariosvalores,asqueenlugardeexplicarla,pasardirectamenteaunejemplo:

Cdigo

1.Setobjshell=createobject("wscript.shell")
2.Setellink=objshell.createshortcut("C:\Accesodirecto.lnk") 'creamosellink
3.Ellink.targetpath="C:\windows\notepad.exe" 'completamoslosvalores
4.Ellink.windowstyle=1
5.Ellink.hotkey="CTRL+SHIFT+N"
6.Ellink.iconlocation="C:\windows\notepad.exe,0"
7.Ellink.description="Accesodirectoanotepad"
8.Ellink.workingdirectory="C:\"
9.Ellink.save 'guardamosellink

Creoqueesteejemploalcanzaparaentendersinproblemasestafuncin,nohacemosmsquecrearellink,completamostodoslosdatosquellevaellink,y
salvamos.
Loscamposacompletarsonlosqueaparecenencualquierlink(imagenadjunta),teniendoencuentademsquenotodossonindispensables.

(http://s2.subirimagenes.com/otros/previo/thump_11574697.jpg)(http://www.subirimagenes.com/otros71157469.html)

Faltaagregar,quepuedencrearselinksapginaswebsdelsiguientemodo.

Ejemplo:
Cdigo

1.Setobjshell=createobject("wscript.shell")
2.Setweburl=objshell.createshortcut("C:\google.url")
3.Weburl.targetpath=http://www.google.com
4.Weburl.save

Simplementehemoscambiadolaextensindellinkaurl,enlugardelnkcomotenaantes,ylarutadellinkpasaaserladireccindelawebalaquequeremos
acceder.


Bueno,asterminalasegundapartedeestetutorial,endondeheintentadomostraraquienesnotienenconocimientos,losdosprincipalesobjetosdela"librera
devbs,esperosehayaentendido,ycomohedadoaentenderenmiprimermensaje,laideaesiragregandonuevoobjetos,seguramentenoagregarmspost
perosiagregarycolgarenel"temario"enlacesparadescargadepdf

)

Saludos

Continuar....

Ttulo:Re:Tutorialvbscript
Publicadopor:netscapeen24Septiembre2008,22:48

Sencillamentetehaquedadogenialeltutorial:o,porciertonovluckerVasaescribiruntutorialsobreelusodelobjetoWMI?:rolleyes:

Graciasporelesfuerzoquehasdedicadoaescribirestaslineas,esperomasmaterialcomoeste:P.

Saludos!!

Ttulo:Re:Tutorialvbscript
Publicadopor:Novluckeren24Septiembre2008,22:57

GraciasD,amedidaquetengaoportunidad,iragregandocosillas.
TutorialdeWMI,seguramente,muchasvecesesmuytilenlosscriptvbs,peroantesdepasaraello,debodeencontrartiempopararecorrerotrostantos
objetos:P

Saludos

Ttulo:Re:TUTORIALvbscript
Publicadopor:SmartGeniusen25Septiembre2008,01:22

Master...estabuenisimotodoesto....yaerahoradequelopusieras....mevienedeperlas.......DD

SihubiesenKarmastelasdaba..:rolleyes:

Contupermisocopiarealgodecontenido....conreferenciaatiOnbio..xD

Saludos.

Ttulo:Re:TUTORIALvbscript
Publicadopor:toxeeken25Septiembre2008,20:42


Quetal.

MuybuentutoNovlucker,FELICIDADES!

Saludos.Suerte.

Ttulo:Re:TUTORIALvbscript
Publicadopor:mirkitoen25Septiembre2008,22:03

Excelentetutorial,graciasporeltiempodedicadopararealizarestegrantrabajo,creoquehabloportodosaldecirqueesperamosqueestetipodetutorialesse
siganrealizando

saludos

Ttulo:Re:TUTORIALvbscript
Publicadopor:Novluckeren26Septiembre2008,00:28

Muchasgraciasatodos,agregadonuevoobjetoeneltemario(pdf),esteessencillito,fueparaloquetuvetiempo:X

Saludos

Ttulo:Re:TUTORIALvbscript
Publicadopor:Eazyen26Septiembre2008,00:37

Buenbuentuto,vosdeberiassermod)
Perotengoqedeciralgo..elAutoittienemaspotenciayesdemasfaciluso.

Ttulo:Re:TUTORIALvbscript
Publicadopor:Novluckeren26Septiembre2008,00:50

Citade:Eazyen26Septiembre2008,00:37
Buenbuentuto,vosdeberiassermod)
Perotengoqedeciralgo..elAutoittienemaspotenciayesdemasfaciluso.

Bueno,creoqueyalodijeunavez,Autoitsitienemuchasfunciones,peropocascosaspuedenhacerseenAutoitquenopuedenhacerseconvbs).
Revisasinolosincludes,yversmuchiiiisimasfuncionesdentrodeestos,quizsahestalaventajadeautoit,yesquetieneslascosasyahechasenfunciones,
peroalfinal,estashaciendousodeuncodemuysimilar.

EjCONincludeenAUTOIT
Cdigo

1.#Include<String.au3>
2.$string="Cadenaadevolver"
3.$Text=_StringReverse($string)
4.MsgBox(0,"Inverso:",$Text)


EjSINincludeconAUTOIT
Cdigo
1.$string="Cadenaadevolver"
2.For$i=1ToStringLen($string)
3.$text=StringMid($string,$i,1)&$text
4.Next
5.MsgBox(0,"Inverso:",$text)


Ahoraconvbsconfuncinespecifica
Cdigo

1.msgboxstrReverse("foro.elhacker.net")


Oelmtodolargo
Cdigo

1.Texto="foro.elhacker.net"
2.e=len(Texto)
3.Fori=1toe
4.voltear=mid(Texto,e,1)&voltear
5.Next
6.Msgboxvoltear


vbstienelaventajadenodependerdenadaquenoestepresentepordefectoenunsistemawin,ylosexe'sdeautoitresultanenormes.
Conrespectoalodelapotencia...esomeloestoyguardandoparamsadelanteD

Saludos

Ttulo:Re:TUTORIALvbscript
Publicadopor:Zaraki_lkenpachien4Octubre2008,08:34

Holadespuesdetiempoentroperdilapass:PktalestaexcelenteeltutofelicitacionesDesperoqueenverdadcontinue(y)

Ttulo:Re:TUTORIALvbscript
Publicadopor:Darioxhcxen5Octubre2008,12:29

comosiempreNovlucker,unmestro=)
lohabialeido,peronocomentado,muybuenogroso
saludos

Ttulo:Re:TUTORIALvbscript
Publicadopor:AriSlashen30Octubre2008,23:21

dehechoesmuypocoparaloquesabestucargodecolaborador)

estaexelenteeeee



salu2yesperolacontinuacion,porquequedecolgado:xD

Ttulo:Re:TUTORIALvbscript
Publicadopor:Novluckeren24Noviembre2008,23:26

Bueno,mehehechoalgodetiempoyheagregadopdfdedosobjetosms,dictionaryycommondialog:P

Saludos

Ttulo:Re:TUTORIALvbscript
Publicadopor:el_geraen28Noviembre2008,22:15

buenasss...tamuybuenoestetutorialperonecesitosaberahoracomoquitarimpresorasdesdeunscriptysisepuedetambiennecesitounafuncionqueme
devuelvaunvalorbooleanodeexistenciadeimpresoras...

Ttulo:Re:TUTORIALvbscript
Publicadopor:Novluckeren28Noviembre2008,22:22

Buenas....

Hasledosolamenteloqueestaaqu,perositefijas,soloestndesarrolladalaintroduccinylosdosprincipalesobjetos,eltercerobjetoenellistadodetemas
haceloquenecesitas,wshNetwork,estenpdf)

Errata:Acabodeverqueestacomolistaryagregarimpresoras,peromefaltoremover:xD,asqueyaloagregoyresuboelpdf>Hecho:P

Ttulo:Re:TUTORIALvbscript
Publicadopor:Metaen22Diciembre2008,12:15

Primeroestelbatch(bat),luegolosVBScriptydespuslosPowerShell2.0.netqueesmejor(supuestamente).Faltaunbuenmanualparaello.

Ttulo:Re:TUTORIALvbscript
Publicadopor:Novluckeren23Diciembre2008,21:27

Buenas

PorfavorenESTEpostsolamentecomentareltuto,yaquedelocontrariotodaslasconsultasdevbsquedarnacumuladasaqu,yparaesoestaelrestodel
subforodescripting:P
Esdecir,detenerconsultassobrealgnscriptvbsabrirunnuevotema,deestemodonosemezclaconelresto

Saludos

Ttulo:Re:TUTORIALvbscript
Publicadopor:MartinPh03n1Xen23Diciembre2008,21:40
NoseriamasfacilqueterminaraseltutolocomaprtierasenunPDFyasicomentarycorregirmasenorden?soloporayudar...Saludos.!

Ttulo:Re:TUTORIALvbscript
Publicadopor:Novluckeren23Diciembre2008,21:50

Quizssiseramssencillo,peroesqueterminareltutonoloes,esollevasutiempo,poresolovoycolgandoporpartesendiferentespdf:P

Loanterioreraparaquenosevinieracontodaslaspreguntasdevbsaestepostsinoqueseabrierauntemanuevo,escomopreguntartodoloreferenteabat
enelpostdesirdarckcat,enlugardehaberunsubforodescriptinghabran5temascontutosylisto:rolleyes:

Saludos

Ttulo:Re:TUTORIALvbscript
Publicadopor:Metaen24Diciembre2008,00:17

Tranquiloqueyalohartodoenuno.Hacerestetutorialrequieremuchotiempo.Sitienesprisalopasdeopoenoffice3.0desdeopenSUSE11.1aPDF.Lohar
mejordesdeMSOfficequetienemscalidadporloqueveo.

Descargarmanual.
http://usuarios.lycos/tombraidereditor/cs/tutorial_de_vbscript.pdf

Hacertutosdeestetiporequieremuchapaciencia,unonosedacuentahastaquetemetasenestemundo.Yohiceunoscuantosmanualesapdf
(http://www.pic16f84a.org/index.php?option=com_content&view=category&layout=blog&id=54&Itemid=124)ydelpuertoserieconvisualc#tard3.5mesesen
acabarlo.

Ttulo:Re:TUTORIALvbscript
Publicadopor:Novluckeren24Diciembre2008,01:59

MuchasgraciasMeta,igualmentefijatequeenelindicehedejadoloslinksdedescarga,laintroduccinyelprimerobjetoesloqueestaenelpostprincipal,y
esoesloqueestaendospdf'sD
Elrestodelosobjetosloshedejadosolamenteenpdf,justamenteporqueseibanamezclarentrelospost:P

Saludos

Ttulo:Re:TUTORIALvbscript
Publicadopor:AriSlashen25Diciembre2008,18:22

eeeeeexeeeelenteeeelasegundaparte

hacetiempoquenomeconectabaxD



salu2

Ttulo:Re:TUTORIALvbscript
Publicadopor:en5Enero2009,04:03

Excelentestutos

Nolosheterminado,perosevequeestanmuybuenos.

Graciascomosiempreporelaporte:laugh:

Ttulo:Re:TUTORIALvbscript
Publicadopor:Dark|o2en1Octubre2009,02:43

muybuenoelprimertutorial,quizasdeberiasponerloenPDFtambien




saludos

Ttulo:Re:TUTORIALvbscript
Publicadopor:Novluckeren1Octubre2009,04:15

Gracias!
Perofijateenlapartedelndicequeestacadaunadelaspartesenpdf,son5entotal:P

Saludos

Ttulo:Re:TUTORIALvbscript
Publicadopor:mavazeroen5Agosto2010,11:51

graciasporeltutorial,esgenialcompartirelconocimientoconlosdemas.

mehaciamuchafalta,creoqueaprenderebastante=):D

Ttulo:Re:TUTORIALvbscript
Publicadopor:leogtzen19Agosto2010,22:30

Hastaahoratuvedetiempodeleerlounpoco,graciasNov.)

Ttulo:Re:TUTORIALvbscript
Publicadopor:WiZZarden22Agosto2010,05:28
Muchasgraciasporeltuto!!))))

Acabodehacermiprimerscript!lopublicoensubforo..


http://foro.elhacker.net/scripting/mi_primer_script_vbs_la_serie_de_fibonaccit302773.0.html
(http://foro.elhacker.net/scripting/mi_primer_script_vbs_la_serie_de_fibonaccit302773.0.html)

Ttulo:Re:TUTORIALvbscript
Publicadopor:Mr.Lerzepen12Noviembre2010,16:45

EstaMuyBienExplicadoNovlucker!,TeFelicitoporestegrantrabajo)))))


Salu2D

Ttulo:Re:TUTORIALvbscript
Publicadopor:Freishneren4Marzo2011,20:25

queraro,nod32mebloquealaiphaciatuspdf:\...enfinmelosbajodesdelavirtualboxparamasseguridad...saludosygranaporte..thx

Ttulo:Re:TUTORIALvbscript
Publicadopor:Novluckeren4Marzo2011,20:36

Usaestehttp://www.mediafire.com/tutovbscript

EsquelosdeNOD32hanpuestoenlistanegraeldominiodemultimania(antestripodlycos)queesunserviciodehostingpblico:\

Saludos

Ttulo:Re:TUTORIALvbscript
Publicadopor:FranciskoAsdfen19Abril2011,19:10

TEngounapregunta,sepuedecambiarlafuenteoelcolordelosMSGBOX?

:DxD

Ttulo:Re:TUTORIALvbscript
Publicadopor:Novluckeren19Abril2011,20:28

Tengounarespuesta,NO:xD

Saludos

Ttulo:Re:TUTORIALvbscript
Publicadopor:FranciskoAsdfen20Abril2011,20:07

JajajajaGraciasxDDD

Ttulo:Re:TUTORIALvbscript
Publicadopor:M4FRen26Mayo2011,17:32

Hola,muybuenoslostutoriales!)

Yamelesletodos...ylaverdadesquemegustaraaprendermscosassobrevbs:P

pondrsalgunoms?D


UnSaludo!

Ttulo:Re:TUTORIALvbscript
Publicadopor:q0oken29Mayo2011,03:14

GraciasNovlucker,ahoramismovoyaempezaraaprender:)))

Postearporelforocualquierdudaquemesurja^^

Ttulo:Re:TUTORIALvbscript
Publicadopor:AnderGrounden24Julio2011,19:55

Muy...MUybuentutorial!mehaayudadomuchoconmisscripts...selesagradecemuchoalosmoderadoresyatodoslosquehanparticipadoenelforo

Ttulo:Re:TUTORIALvbscript
Publicadopor:eva87en30Noviembre2011,13:11

Alguienmepuedehecharunamanoconesteprogramita>:Dgracias
Cdigo

1.OptionExplicit
2. dimnum,Aleatorio,max
3. num=0
4. max=25
5. Randomize
6. Aleatorio=CInt((max1)*Rnd()+1)
7. MsgBox(Aleatorio)
8. num=inputbox("Adivinaelnumeroquepiensodel0al"&max)
9.
10. dountilnum=Aleatorio
11. ifnum>Aleatoriothen
12. msgbox("Esmenor")
13. else
14. msgbox("Esmayor")
15. endif
16. num=inputbox("Pruebaotravez")
17. loop
18. msgbox("Acertastes,erael"&Aleatorio)

Ttulo:Re:TUTORIALvbscript
Publicadopor:Novluckeren30Noviembre2011,13:23

Debesdeconvertiranmerolosvaloresobtenidosenelinputbox,delocontrariolotomacomotextoynohacelacomparacincorrectamente:P

Saludos

Ttulo:Re:TUTORIALvbscript
Publicadopor:jefjaibe89en27Enero2012,10:42

HolaMuchachossoynuevoenelforo,observedetenidamentelainformacion.Yquizasudsmepuedanayudar.MiideaesabrircmdyejecutarelcomandoTelnet
paraunaconexionremotaaRouter.Ellogradohacerlocon.run,perodesgraciadamenteesteultimotienelimitacionesenlalecturadelaaplicacin.Poresa
razonoptepor.execdebidoalacapacidaddeleerlaaplicacion.
Puesnecesitoelresultadodelaejecuciondelloscomandossobreelrouter.
Cdigo

1.Seti=CreateObject("WScript.Shell")
2.Settel=i.exec("cmd")
3.WScript.Sleep(500)
4.i.appactivateping.processid
5.WScript.Sleep(500)
6.ping.sendkeys("telnet10.10.10.10{ENTER}")
7.WScript.Sleep(500)
8.ping.sendkeys("password{ENTER}")
9.WScript.Sleep(500)
10.ping.sendkeys("comandos{ENTER}")
11.WScript.Sleep(500)
12.
13.
14.Do
15.ifnottel.stdout.atendofstreamThen
16.respuesta=respuesta&tel.stdout.read(1)
17.Else
18.ExitDo
19.Endif
20.Loop
21.Setobjfso=createobject("scripting.filesystemobject")
22.Setarchivotexto=objfso.OpenTextFile("C:\test.txt",8,true)
23.archivotexto.Write(respuesta)
24.archivotexto.writeblanklines(1)
25.archivotexto.Write("GeneraciondelArchivo")
26.archivotexto.writeblanklines(1)
27.archivotexto.Write("Fecha:"&Date&"Hora:"&Time)
28.ping.terminate
29.

Nota:Algunasdelaslineasdecodigofuerontomadasdeaca.PorFavoragradeceriasipudiesenayudarme.

Ttulo:Re:TUTORIALvbscript
Publicadopor:Stakewinner00en6Mayo2012,00:19

estabastantebien

Ttulo:Re:TUTORIALvbscript
Publicadopor:andres005en9Diciembre2012,21:11

ExcelentetutorialNovluckerytodavamejorlospdf.Meheregistradosloporagradecertetanbuenaporte,mevienedeperlas.

GRACIAS

Ttulo:Re:TUTORIALvbscript
Publicadopor:.::KsV::.en13Diciembre2012,23:01

ExelenteNovluckersigeasi(y)

Ttulo:Re:TUTORIALvbscript
Publicadopor:lararichen28Septiembre2014,21:15

meestasirviendodemuchautilidad
gracias...

Ttulo:Re:TUTORIALvbscript
Publicadopor:NogardMishimaen30Octubre2014,06:59

Consideroqueesunmuybuentutorialapesardequenoconozcomuchodeestosscripts,
perolaformadeexplicarestaexcelente,estoynuevoenestoperomepareceinteresanteyquisierasabersipuedohaceralgoqueheestadobuscandoperono
doyconloquequiero.
estoesloquetengo:

loginName=InputBox("IntroduzcaNombre")
confirmacion=MsgBox("Sunombrees:"&_
loginName&VbCrLf&"escorrecto?",_
vbYesNo,"Continuar?")

Ifconfirmacion=vbYesThen
MsgBox"Ustedhadecididocontinuar",1,"Registro"
Else
MsgBox"UstedhadecididoNOcontinuar"
EndIf

loqueseescribeenelinputboxapareceenelmsgbox,loquequisierasaberescomoguardarenunarchivo.txtloqueapareceenelmsgbox.
Deantemanograciasyesperohabermeexplicadobien.

Ttulo:Re:TUTORIALvbscript
Publicadopor:Eletroen30Octubre2014,08:51

Citade:NogardMishimaen30Octubre2014,06:59
loqueseescribeenelinputboxapareceenelmsgbox,loquequisierasaberescomoguardarenunarchivo.txtloqueapareceenelmsgbox.
Deantemanograciasyesperohabermeexplicadobien.

Unhilosobreuntutorialnoeslugarparadesviareltemaconotrotipodepreguntasquenoestnrelacionadasconeltemaprincipal.

Formulatupreguntaenunnuevopost.

Cierroeltema,amenosqueNovLuckerquieraquesereabraporcualquiermotivo

PoweredbySMF1.1.21|SMF20062008,SimpleMachines