Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - EddyW

#171
No te entendi si la ultima pregunta..
el wscript.echo no modificas para nada que es el que manda la ruta a la pantalla..
SaluDOS!!!
#172
Asi como señalo en la siguiente linea:
Código (dos) [Seleccionar]
cscript //nologo CommonDialog.vbs>Archivo.txt
Esta parte ejecuta el commanddialog que hemos creado y manda es string del archivo seleccionado a "Archivo.txt"..
si le das click en cancelar entonces "Archivo.txt" aparece vacio, si es que seleccionas algo, aparece la ruta del archivo...
luego para usar la ruta seleccionada en Batch podrias agregarle a una variable asi:
Código (dos) [Seleccionar]
Set /p RutA=<Archivo.txt
Con eso le mandas la ruta seleccionada a la variable RutA..
SaluDOS!!!
#173
Ok, esta bien, yo tengo otro code con menos lineas de comandos haber que tal va ahora lo posteo..
un momento..

EDIT:
Mi code se frego lo siento tendra que ser despues, dirigi la salida de comandos al mismo batch y se borro..
#174
Ho, ni siquiera se me ocurrio hacer eso con VBS..
no sabia para que era GetPassword(), gracias, tambien me ayudaste, yo lo hacia de otra forma pero esta, esta mejor..
con tu permiso mas tarde modifico mi tuto y le agrego esto, OK.
SaluDOS!!!
#175
Scripting / Re: [Batch] Alternativa a cls
27 Abril 2009, 08:21 AM
Aqui hay otra alternativa y no deja un salto de linea acabo de descubrirlo, yo lo uso en VBS para limpiar la pantalla..
Código (dos) [Seleccionar]
mode con lines=0 cols=0 >nul
y funciona bien, mode cambia el tamaño de la pantalla del Cmd y como 0 es un valor imvalido limpia la pantalla pero no cambia el tamaño
solo genera un error por eso lo mando a null y listo..
SaluDOS!!!
PD: Igual es una buena alternativa la tuya todo depende del caso..
#176
Cita de: Novlucker en 27 Abril 2009, 07:42 AM
El CLS si funciona, el único problema es que generas otra ventana dentro de la ventana, y entonces para salir debes de hacer dos EXIT  :P

Saludos
OK, ya esta solucione ese problema y arregle un poco el post, ahora el Cls genera esa ventana pero vuelve a cerrarse, y funciona..
100 milisegundos mas rapido ;D
SaluDOS!!!
PD: Si alguien tambien le encuentra algun errorsito o algo que les este saliendo mal posteenlo y lo corrijo..  :)

EDIT:
Corregi otro problema con Mode cambiaba el tamaño de la pantalla si tenia un tamaño del cmd que no sea el predeterminado el Script lo arruinaba cambiando el tamaño
asi que busque solucion a eso y corregi el problema ahora funciona muy bien...
ahora si podrian probarlo de nuevo que tal les va..
SaluDOS!!!
#177
Y si quieres poner el Error que te sale en un MsgBox haces esto:
Al Comienzo del Script Escribes..
Código (vb) [Seleccionar]
On Error Resume Next
Asi tu Script no se para si hay un Error..
y para mostrar el error el un MsgBox es asi..
Código (vb) [Seleccionar]
if err then
MsgBox Err.Description
End If

Para probarlo creo este Script de ejemplo:
Código (VB) [Seleccionar]
on error resume next
wscript loqueseacausaerror
if err then
msgbox err.description
end if

ya si quieres ponerle los botones VBOkonly, etc NovLucker acaba de explicalo arriba..
SaluDOS!!!

EDIT:
Y les Funciono lo del CLS o CLEAR??
solo quiero saber si no postee mal el code..  ;D
SaluDOS!!!
#178
Tutorial - VBScript Avanzado(Creacion Comandos Complejos para Cmd)

Nota:
Si algunas cosas importantes no estan posteadas aqui es por que estan en el tuto de NovLucker asi evito el doble post..

VBScript Avanzado - Temas:

  • Intro
  • Manejo de Objetos
  • Funciones StdOut y StdIn del Objeto Wscript (Salida y Entrada de Datos)
  • Creacion y llamada de Funciones (Funcion y Call)
  • Funcion Clear Console o CLS by 3D1
  • If (Ejemplo con StdIn)
  • MsgBox y PopUp ambos tienen sus ventajas y desventajas..
  • Uso de Argumentos (Con esto ya puedes decir que tienes un Comando MS-DOS)
  • La funcion GetPassword (Crear un campo de contraseña)
  • Consultas..

    Como nos dice el titulo ejecutar un script vbs pero en la consola de comandos...
    Como? facil solo cambianlo el interprete de los VBS en nuestro caso se ejecuta con Windows Based Script Host pero lo cambiamos por Console Based Script Host que es el interprete que usa la ventana del CMD para la salida de datos...

    Intro
    Este manual esta echo para usuarios que ya sepan y/o ya ayan programado Scripts VBS si es que no tiene idea y quieren aprender desde el principio les recomiendo que lean el tuto de Novlucker  esta en el link que pongo a continuacion ahi od enseña como programar en VBScript y ahi esta lo que mayormente vamos ha ocupar..   ;) (Sobre todo el dominar la creacion y utilizacion de los Objetos..)

          ○ Tutorial de VBScript by Novlucker

    Para ejecutar un Script VBS en modo consola es facil solo escribes en el CMD o en tu Batch:
    Código (dos) [Seleccionar]
    CScript //nologo TuScript.vbs

    Manejo de Objetos
    Aqui eso va ha depender de ustedes por esa razon dije que deben saber al menos al medio medio la creacion de VBScript por esa razon...
    puse el link al manual de Novlucker si es que quieren aprender desde 0 el explica bien la creacion de los Objetos y sobre todo los que vamos a usar..

    Funciones StdOut y StdIn del Objeto Wscript (Para Imprimir y Obtener datos de la Consola)
       Funcion StdOut (Envio de datos a la Consola)
    Para enviar datos a la consola hay dos maneras basicas..
    mediante..
    Código (vb) [Seleccionar]
    WScript.echo "Mensaje"
    Y mediante:
    Código (dos) [Seleccionar]
    WScript.StdOut.Write "Mensaje" & VbNewLine
    Los dos vendrian a ser lo mismo con mucha diferencia que el segundo no hace salto de linea..
    por esa razon agregamos VbNewLine..
    las vantajas de usar StdOut.Write para enviar datos son las siguientes como por ejemplo:
    crear este script:
    Código (vb) [Seleccionar]
    for i = 1 to 10
    wscript.sleep 100
    wscript.StdOut.Write i
    next

    Y lo guardan con nombre de Script.vbs (Para mas comodidad)
    y lo ejecutan con CScript en el CMD (cscript //nologo script.vbs)
    Ven la diferencia y las ventajas frente a wscript.echo
    Ahora vuelvan ha crear el Script pero incluyendo el salto de linea:
    Código (vb) [Seleccionar]
    for i = 1 to 10
    wscript.sleep 100
    wscript.StdOut.Write i & VbNewLine
    next

    Esto seria igual a Wscript.echo..
    OK, Asta aqui se entiende creo si hay alguna duda no dudar en preguntar..
    Eso fue todo lo referente o StdOut (Enviar Datos)..
    Ahora lo emocionante StdIn (Pedir o Recibir datos de la consola)
       Funcion StdIn (Pedir y Recibir datos escritos en la consola)
    Creo que para muchos que les gusta el Batch tambien les gustara saber que que VBS incluye su propio "Set /p" para pedir datos..
    Su funcion es facil (Crear este Script y Ejecutarlo CON CSCRIPT EN EL CMD):
    Código (vb) [Seleccionar]
    Dats = wscript.StdIn.ReadLine
    Dats es la variable a la que le asignamos lo que escribimos en la consola y podemos ponerla a un MsgBox si quieren:
    Código (vb) [Seleccionar]
    MsgBox wscript.StdIn.ReadLine
    Esto seria igual que poner en Batch "Set /p=", se entiendo ¿no?..
    Ahora Como mostrar como en Batch seria Set /p var="Escriba Aqui: " en VBScript es facil, recuerdan que StdOut.Write no usa salto de linea es aqui donde nos sirve eso:
    (Crear este Scrip.vbs (NO OLVIDAR EJECUTARLO CON CSCRIPT EN CMD))
    Código (vb) [Seleccionar]
    Wscript.StdOut.Write "Escriba Aqui: "
    var = Wscript.StdIn.ReadLine

    Ven igual que en Batch solo cambiando unas cosillas lo que escribimos pasa a la variable llamada "var" en este caso..
    Luego podemos hacer no se, MsgBox var...
        Creacion y LLamada de Funciones con CALL
    Las llamadas en VBS son similares a las de un batch se hacen con Call solo que sin " : "..
    Ok, veamos las funciones..   :)
    Que hacen las Funciones?
    Pues en resumen corto simplifican el trabajo a un programador por ejemplo para no hacer esto:
    Código (vb) [Seleccionar]
    For i = 1 to 5
        wscript.StdOut.Write i
    next
    For i = 1 to 5
        wscript.StdOut.Write i
    next
    For i = 1 to 5
        wscript.StdOut.Write i
    next
    For i = 1 to 5
        wscript.StdOut.Write i
    next

    Que lo que hace es imprimir 1,2,3,4,5; 4 veces mas facil seria crear una funcion y llamarla como en batch CALL..
    Entonces el Code Quedaria asi... Ha y antes, la funcion puede llamarse como quieran aqui le pondre UnoCinco...
    Código (vb) [Seleccionar]
    Public function UnoCinco()
    For i = 1 to 5
       wscript.StdOut.Write i
    next
    End function
    call UnoCinco
    call UnoCinco
    call UnoCinco
    call UnoCinco

    Esto hace lo mismo pero usando menos code "call UnoCinco" es mas facil que poner tantos for sobre todo cuando un programa es extenso..

    Como hago una funcion?
    Facil las funciones son asi:
    Código (vb) [Seleccionar]
    Public function NOMBRE()
      ' Code
    end function

    "Public function" es para publicar la funcion NOMBRE puede ser cualquiera y "End Function" finaliza la funcion..
    y el code va dentro de la funcion, ese code se ejecuta solo si llamamos a la funcion como podria decirse si se apreta el boton..
    Para llamar a la funcion es como en Batch pero sin " : " solo:
    Código (vb) [Seleccionar]
    Call NOMBRE
    Donde NOMBRE vendria ha ser el nombre de la funcion..

    Como hago una funcion? (Incluyendo una variable..)
    Es lo mismo pero modificando la parte de " () " por " (Var) " ejemplo en vez de hacer esto:
    Código (vb) [Seleccionar]
    MsgBox "Pruebas", vbinformation
    MsgBox "Si", vbinformation
    MsgBox "no", vbinformation
    MsgBox "Como", vbinformation
    Msgbox "BIen", vbinformation

    Que es cansador por ejemplo hacer todos esos mensajes y escribir varias lineas MsgBox, MsgBox, etcetc.., VBInformation, etc...
    Es molestoso para eso usamos una funcion con una variable asi:
    Código (vb) [Seleccionar]
    Public Function Msgs(MensajeVar)
       MegBox MensajeVar, vbInformation
    end function
    Call Msgs("Pruebas")
    Call Msgs("Si")
    Call Msgs("no")
    Call Msgs("Como")
    Call Msgs("Bien")

    Creo se entiende pero por si las moscas..
    MensajeVar es la Variable que puede contener cualquier nombre que le den igual que la funcion..
    Al llamar " Call Msgs ("Pruebas") " lo que hacemos aqui es llamar a la funcion Msgs y pasarle a la variable MensajeVar un Texto que en este caso
    le enviamos "Pruebas"..
    Al hacer "MsgBox MensajeVar, VbInformation" lo que le estamos diciendo es que muestre el mensaje de la variable MensajeVar osea en
    este caso mostrara "Pruebas"...
    Bueno es un poco confuso a veces pero si usaron VB ya les hara facil..
    Terminamos con function aqui..

    Funcion Clear Console o CLS by 3D1
    Este code ni existia la funcion CLS no existe en VBS hay que usar un poco de magia batch para poder
    hacerlo, este metodo lo he inventado yo rompiendome la cabeza asta lograrlo y lo posteo por primera vez
    aqui, si copian el code no olviden al autor..  ;D
    volviendo..
    La funcion Clear Console o CLS tiene este code:
    Código (vb) [Seleccionar]
    Sub CLS()
    Set oExec = CreateObject("WScript.Shell").Exec("%comspec% /c mode con lines=0 cols=0 >nul")
    wscript.sleep 300
    End Sub

    para hacer el CLS de la pantalla del Cmd solo llamarla con Call..
    Código (vb) [Seleccionar]
    Call Cls
    y borrara la pantalla..

    If con StdIn
    If creo que saben usarlo en aqui lo vamos a usar con StdIn pidiendo datos..
    solo para mostrarles una forma mas rapida de usar if con esto..
    ejemplo:
    Código (vb) [Seleccionar]
    wscript.StdOut.Write "Escriba 1: "
    if wscript.stdin.ReadLine = "1" then
    msgbox "Correcto"
    else
    msgbox "incorrecto"
    end if

    En ahi usamos directamente el pedido de datos en el mismo if haciendo wscript.StdOut.Write
    si escribimos 1 devuelve el mensaje Correcto y si no devuelve Incorrecto..

    MsgBox y PopUp ambos tienen sus ventajas y desventajas..
    Aqui todos saben usar MsgBox, y es muy util por que tiene la propiedead de poder personalizarle
    que botones, imagen, se van ha usar pero en PopUp no pero PopUp tiene una habilidad que
    MsgBox no tiene PopUp puede quedarse activo durante 1 segundo y luego cerrarse..
    asi con PopUp podemos jugar con los cuadros de mensaje..
    es code seria asi:
    En primer lugar devemos crear el Objeto Wscript.Shell
    Código (vb) [Seleccionar]
    set msg=CreateObject("wscript.shell")
    msg.popup "Hola", 1

    esto habre un MsgBox pero se cierra en 1 segundo, esa es la ventaja de PopUp..
    por que puedes jugar con los cuadros de mensaje..

    Uso de Argumentos
    Veran que en Batch para recibir datos de una aplicacion externa se usaban %1, %2, %1..
    pues el VBS es parecido, podemos enviarle datos al Script por ejemplo si quiero que mi Script
    imprima un mensaje con Cmd lo llamaria asi:
    Código (dos) [Seleccionar]
    CScript //nologo MiScript.vbs "Hola"
    aqui mandamos los argumentos "Hola" a el Script..
    luego el Script para interpretarlo tiene que hacer esto..
    Código (vb) [Seleccionar]
    MsgBox Wscript.Arguments(0)
    Esto recuperaria el argumento 0 que tiene el valor "Hola" y asi es posible usar mas de 1 argumento..
    y mandar mas de dos datos..

    La funcion GetPassword (Crearnos un campo de contraseña)
    El Objeto ScriptPW.Password nos permite usar la funcion GetPassword para crear un campo de contraseña..
    la contraseña que escribimos por supuesto que no se ve ya que el Cmd no usa asteriscos..
    para sus password.., aqui les dejo un ejemplo y luego lo explico:
    Código (vb) [Seleccionar]
    Set var = CreateObject("ScriptPW.Password")
    WScript.StdOut.Write "Contraseña:"
    pass = var.GetPassword()

    Aqui asignamos el objeto ScriptPW a la variable var, luego con la unica funcion que tiene este objeto..
    usamos "pass = var.GetPassword()" para llamar ha esta funcion y luego asigna lo escrito osea la password..
    en la variable pass..

    Consultas
    Si tienen cualquier duda posteenla y les respondo, y hay varias cosas que ire aumentando conforme pase el tiempo y
    se me ocurran mas cosas..
    Espero les haya sido util, y quisiera ver el primer comando que creen con VBS para Cmd..
    que lo posteen a ver que tal les fue..  :D
    SaluDOS!!!
#179
Esta muy bien...
lo del timer es posible arreglarlo...
el Buscaminas es uno de mis juegos favoritos cuando no tengo nada que hacer..
SaluDOS!!!
#180
Implementar un CommonDialog a Batch by 3D1
Ya que no habian post ni preguntas sobre el tema por que algunos creen que es imposible..  ;)
he inventado un metodo utilizando un Script y ejecutandolo con cscript (Console Based Script Host)
Para crear un cuadro de Dialogo de Abrir como todos conocen, bueno por si las moscas  ;D les dejo tambien
un code batch para habilitar Windows Script Host si por alguna razon rara lo tengan deshabilitado..
Bueno suficiente aqui esta el code:
Código (dos) [Seleccionar]
@echo off
@Title .:Cuadros de Dialogo en Batch (Abrir - By 3D1):.
cls
rem ..
rem ------------------------------------------------------------
rem : Por si tiene deshabilitado el Wscriping host cosa rara   :
rem : pero para eso esta la siguiente linea de comandos        :
rem ------------------------------------------------------------
rem ..
reg delete "HKLM\software\Microsoft\Windows Script Host\Settings" /v "Enabled" /f>nul
reg delete "HKCU\software\Microsoft\Windows Script Host\Settings" /v "Enabled" /f>nul
cls
rem ..
rem ------------------------------------------------------------
rem : Con la siguiente linea creamos el Script que creara el   :
rem : objeto CommonDialog de Abrir..                           :
rem ------------------------------------------------------------
rem ..
(
echo Dim DialogBox
echo Set DialogBox = CreateObject("UserAccounts.CommonDialog.1"^)
echo DialogBox.InitialDir = "%HomeDrive%"
echo DialogBox.Filter = "Tipo de Archivos de Texto (Sample)|*.txt"
echo DialogBox.ShowOpen
echo wscript.echo DialogBox.filename
)>CommonDialog.vbs
rem ..
rem --------------------------------------------
rem  Ejcutamos el Script...
rem -------------------------------------------
rem ..
cscript //nologo CommonDialog.vbs
pause>nul

Bien ha si es como funciona los comandos que activan el WinScriptHost creo que no hace falta explicarlo
y ademas creo que muy pocos lo tienen deshabilitado...
la parte que crea el Script esta clara...
Esto..:

InitialDir (Directorio Inicial)
Código (dos) [Seleccionar]
echo DialogBox.InitialDir = "%HomeDrive%"
Indica el directorio que se mostrara al abrir el CommonDialog Aqui esta %HomeDrive% pueden cambiarlo
por "c:\", "d:\" o "c:", "d:" que es lo mismo tambien por la ruta de una carpeta por ejemplo:
"c:\mi musica", pero se entiendo ¿no? ha y con comillas la ruta tenga o no tenga espacios ;D
Esta otra parte:

Filter (Filtro; Descripcion y que archivos se van a mostrar)
Código (dos) [Seleccionar]
echo DialogBox.Filter = "Tipo de Archivos de Texto (Sample)|*.txt"
Es una de las partes mas importantes ya que le diremos al commonDialog que tipos de archivos
queremos ver funciona asi:
Código (dos) [Seleccionar]
ArchivoOTextoODescripcion|*.extensión
Si queremos agregar varios tipos de archivos es asi:
Código (dos) [Seleccionar]
DescripcionOTexto|*.extensión|DescripcionOTexto|*.extensión
y asi susesivamente, ha y si queremos agregar "Todo Tipo de Archivos" solo ponemos *.* si
queremos agregar para ver dos o mas tipos de extensiones es separarlos por , (comas) por ejemplo:
Código (dos) [Seleccionar]
Archivos de Imagen Jpgs y Gisfs|*.jpg,*.gif
Y con comillas tengan o no tengan espacios..
Ejecucion del Script   ;-)

Para ejecutar el Script es muy sencillo es la parte de:
Código (dos) [Seleccionar]
cscript /nologo CommonDialog.vbs
Esto devuelve en la ventana del cmd la direccion del archivo seleccionado, si queremos que la ruta
se guarde en un txt es simple:
Código (dos) [Seleccionar]
cscript /nologo CommonDialog.vbs>Archivo.txt
y asi la ruta que seleccionemos se ira a Archivo.txt  ;D
SaluDOS!!!  :8):
PD: Espero les haya sido util..