Professional Documents
Culture Documents
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