Embeber un vbs en un bat.

Tema en 'Soft y Hard' comenzado por Mrmainque, 20/Jul/2013.

  1. Mrmainque

    Mrmainque Cuevino Milenario

    Ingreso:
    24/Jul/2012
    Mensajes:
    1.419
    Llevo un par de horas boludeando con un menu en ms-dos usando choice, pero llego el punto en el que para que el bat funcione integramente me usa demaciados exes externos, asi que decidi poner un .vbs que descargue todo lo necesario de mi ftp.
    El problema es que para que pongo un vbs para evitar tener que cargar el bat con exes de compania si eso requiere de un vbs con el bat, ¿alguno ejem edr ejem sabra como hacer para "embeber" el vbs en el bat?
    Anduve googleando un poco y todo lo que encontre es un post en el que no se explica un carajo de como funciona, y ya intente con echo texto>>archivo.vbs pero eso parece que me caga varias partes del vbs.
    El archivo en cuestion es esto:

    Código:
    dim xHttp: Set xHttp = createobject("Microsoft.XMLHTTP")
    dim bStrm: Set bStrm = createobject("Adodb.Stream")
    xHttp.Open "GET", "http://chatdelacueva.xtrweb.com/exes/wget.exe", False
    xHttp.Send
    
    with bStrm
        .type = 1
        .open
        .write xHttp.responseBody
        .savetofile "wget.exe", 2
        .close
    end with
    xHttp.Open "GET", "http://chatdelacueva.xtrweb.com/exes/7z.exe", False
    xHttp.Send
    
    with bStrm
        .type = 1
        .open
        .write xHttp.responseBody
        .savetofile "7z.exe", 2
        .close
    end with
    
    xHttp.Open "GET", "http://chatdelacueva.xtrweb.com/exes/choice.exe", False
    xHttp.Send
    
    with bStrm
        .type = 1
        .open
        .write xHttp.responseBody
        .savetofile "choice.exe", 2
    end with
     
    #1
  2. Daedalus

    Daedalus Cuevino Milenario

    Ingreso:
    31/Dic/2009
    Mensajes:
    1.457
    Como es que el echo >> archivo te caga algo?

    Hacete una sección en el .bat onda

    :aux
    echo linea1 > archivo.vbs
    echo linea2 >> archivo.vbs
    -
    -
    -
    echo linean >> archivo.vbs

    goto inicio

    Acordate la primera linea va con un solo cocodrilo (xD!), porque uno solo te reemplaza el contenido del archivo, en cambio ya cuando pones doble 'greater-than' anexa al archivo la linea que sigue y asi.
     
    #2
  3. Mrmainque

    Mrmainque Cuevino Milenario

    Ingreso:
    24/Jul/2012
    Mensajes:
    1.419
    No se bien porque pero el echo >> no escribe los numeros y ese vbs tiene un par de ellos, a menos que encuentre una forma de pasar por encima de eso hacer al bat escribir el documento no es una opcion.
     
    #3
  4. ADPunk

    ADPunk The glider glides

    Ingreso:
    7/Nov/2006
    Mensajes:
    1.982
    Si no escribe numeros necesitas guardarlos en variables como letras y llamarlas con una funcion que las convierta a numeros.
     
    #4
  5. Daedalus

    Daedalus Cuevino Milenario

    Ingreso:
    31/Dic/2009
    Mensajes:
    1.457
    Mirá lo hice asi nomas en el Notepad++, a mi me funcionó (el vbs de salida es exactamente igual al que pusiste)

    Código:
    echo dim xHttp: Set xHttp = createobject("Microsoft.XMLHTTP") > archivo.vbs
    echo dim bStrm: Set bStrm = createobject("Adodb.Stream") >> archivo.vbs
    echo xHttp.Open "GET", "http://chatdelacueva.xtrweb.com/exes/wget.exe", False >> archivo.vbs
    echo xHttp.Send >> archivo.vbs
    echo. >> archivo.vbs
    echo with bStrm >> archivo.vbs
    echo     .type = 1 >> archivo.vbs
    echo     .open >> archivo.vbs
    echo     .write xHttp.responseBody >> archivo.vbs
    echo     .savetofile "wget.exe", 2 >> archivo.vbs
    echo     .close >> archivo.vbs
    echo end with >> archivo.vbs
    echo xHttp.Open "GET", "http://chatdelacueva.xtrweb.com/exes/7z.exe", False >> archivo.vbs
    echo xHttp.Send >> archivo.vbs
    echo. >> archivo.vbs
    echo with bStrm >> archivo.vbs
    echo     .type = 1 >> archivo.vbs
    echo     .open >> archivo.vbs
    echo     .write xHttp.responseBody >> archivo.vbs
    echo     .savetofile "7z.exe", 2 >> archivo.vbs
    echo     .close >> archivo.vbs
    echo end with >> archivo.vbs
    echo. >> archivo.vbs
    echo xHttp.Open "GET", "http://chatdelacueva.xtrweb.com/exes/choice.exe", False >> archivo.vbs
    echo xHttp.Send >> archivo.vbs
    echo. >> archivo.vbs
    echo with bStrm >> archivo.vbs
    echo     .type = 1 >> archivo.vbs
    echo     .open >> archivo.vbs
    echo     .write xHttp.responseBody >> archivo.vbs
    echo     .savetofile "choice.exe", 2 >> archivo.vbs
    echo end with >> archivo.vbs
    
     
    #5
  6. Mrmainque

    Mrmainque Cuevino Milenario

    Ingreso:
    24/Jul/2012
    Mensajes:
    1.419
    Lo unico que se me ocurre es que yo haya puesto "echo .savetofile "choice.exe", 2>> archivo.vbs" en ves de "echo .savetofile "choice.exe", 2 >> archivo.vbs" y eso haya afectado el resultado, igual gracias :P
     
    #6
  7. Daedalus

    Daedalus Cuevino Milenario

    Ingreso:
    31/Dic/2009
    Mensajes:
    1.457
    Ah vos no dijiste que era por tu linea de comandos, obvio que lo afecta, 2 es el dispositivo estándar de error (stderr) lo que dice tu linea de comandos es basicamente:

    - Imprimi en pantalla la linea ".savetofile 'choice.exe', "
    - Si tenés algun error, guardamelo en archivo.vbs

    Con espacio lo solucionás como bien pusiste
     
    #7
    Última modificación: 23/Jul/2013

Compartinos

Cargando...