este tema ia lo emos tokado antes pero si mal no recuerdo ... no lo resolvimos con vbs ... asiq:
ay varias formas pero explicare la mas rapida (para mi xD)
caso aplicativo: necesito un programa q guarde en un archivo txt, cuales son los archivos q tiene dentro el disco donde esta instalado el WIN (normalmente C:)
programa:
@echo off
%systemdrive%
cd %systemdrive%\
dir /s > "%systemdrive%%~p0%archivos.txt"este proceso demora muxo tiempo (dependiendo d cuantos archivos tenga el disco) asiq le agregaremos algunas cosas para q no tengamos q ver la consola mientras se realiza el proceso
programa 2:
@echo off
rem verificamos si el code lo ejecuto el vbs
goto %1_run
:ini_run
rem acemos el proceso principal
%systemdrive%
cd %systemdrive%\
dir /s > "%systemdrive%%~p0%archivos.txt"
:_run
rem creamos y ejecutas el vbs q ejecuta el code con el parametro
echo set shell = CreateObject("wscript.shell") > run.vbs
echo shell.run "cmd /c "%0" ini", vbHide >> run.vbs
start run.vbs:S ... la vd no soy muy bueno para acer tutos (xplicar codes) asiq prefiero q el q no entienda algo del code ... lo pregunte ... io con gusto ayudare..
PD: al ejecutarse el .bat, se vera la consola x maximo 2 segs (lo requerido para crear el vbs)... si qieren que se ejecute y q en ningun momento se vea la consola ... pos el .bat debe encapsularse en un vbs ... esto ia seria vbs-bat x esto no expuse este metodo ... pero si algien lo qiere ... pos digame y io lo postiare.. xD
PD2: este metodo lo e ideado io .... x consigiente no s el unico q ay ... pueden haber muxos mas ... eso depende de la creatividad del coder.
Saludos

--------------------------------------------------------encapsulacion bat en vbs
code:
--------------------- prog.vbs---
set cmd = createobject("wscript.shell")
Set shell = CreateObject("Scripting.FileSystemObject")
dta=" @echo off"&vbcrlf& _
"%systemdrive%"&vbcrlf& _
"dir /s > ""%systemdrive%%~p0archivos.txt"""
set b=shell.CreateTextFile("w.bat")
b.close
set d=shell.OpenTextFile("w.bat",2)
d.write dta
d.close
cmd.run "w.bat", vbHide
--------------------------------
explicacion detallada (linea a linea):
.... notece q la extesion del ejecutable DEBE ser .vbs o .vbe ... (loqsea.vbs o loqsea.vbe)
************************************************************************
set cmd = createobject("wscript.shell") ---> especifica la var "cmd" para usar como shell
Set shell = CreateObject("Scripting.FileSystemObject") ---> especifica la var "shell" para manejar archivos
dta=" @echo off"&vbcrlf& _ ---> empieza a establecer las lineas batch en la var "dta"
"%systemdrive%"&vbcrlf& _ ---> segimos estableciendo.. notece el uso de "&vbcrlf& _"
"dir /s > ""%systemdrive%%~p0archivos.txt""" ---> es como para acer un "ENTER" dentro de la var.. notece tambien q a la ora de poner rutas o comandos q contengan comillas """.. se le debe agregar una al inicio y otra al final asi.. PE.: en .bat: "%systemdrive%%~p0archivos.txt" __ encapsulado: ""%systemdrive%%~p0archivos.txt"" .... notece tambien q al final del code batch no se debe poner &vbcrlf& _ ya q debe especificarse el final de la variable
set b=shell.CreateTextFile("w.bat") ---> creamos el .bat
b.close ---> lo cerramos
set d=shell.OpenTextFile("w.bat",2) ---> lo abrimos en modo escritura (2) ~ ...("w.bat",2)
d.write dta ---> escribimos, la var q contenia el batch, dentro del .bat creado
d.close ---> cerramos el .bat y listo!
cmd.run "w.bat", vbHide ---> lo corremos en modo oculto .. y ya sta! corremos el vbs y n ningun momento se ve la consola... xD
************************************************************************
Saludos
