[BATCH+VBS] Manual - Implementar un CommonDialog "Abrir con.." en Batch

Iniciado por EddyW, 16 Abril 2009, 09:04 AM

0 Miembros y 1 Visitante están viendo este tema.

EddyW

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..


maty_16_94

hola me interesa bastante el tema pero no me quedo muy claro.. como endria que hacer para usar el archivo q seleccione dentro del bat?

EddyW

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!!!

maty_16_94

#3
jekej gracias man sos un groso

Edit: una ultima cosita... en wscript. tngoq poner algo despues del punto? x q me tira error q falta un modificador y no se donde lei un code q decia WScript.echo por ejemplo

Re-Edit:Ya lo solucione :P

EddyW

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!!!

maty_16_94

#5
Naa deja fue un error mio eso... ahora el tema es que no escribe la ruta del archivo en el archivo archivo.txt me lo deja con un espacio pero no con la ruta del archivo q selecione... estoy viendo como puedo hacer para solucionar.

Saludos


EDIT: SOLUCIONADO... Muy bueno tu code gracias