Batch Multi Instalador

Iniciado por ociruam, 11 Octubre 2010, 21:56 PM

0 Miembros y 4 Visitantes están viendo este tema.

leogtz

Es fácil detectar el cdrom, con wmic.exe o con fsutil puedes.

http://foro.elhacker.net/scripting/detector_de_unidades_cdrom-t223795.0.html
PD: Eso lo hice hace mucho, pero según creo que se puede hacer en menos líneas usando wmic.exe.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

flony

#11
tenes razon leo con wmic lo podes sacar en esta pagina ya lo habias hecho vos  ;-) http://foro.elhacker.net/scripting/batch_problema_con_script_para_detectar_usb_solucionado-t245816.0.html
yo solo lo tunee un poco para que saque lo que necesita ociruam  :rolleyes:
for /f "tokens=1" %%a in ('wmic logicaldisk get caption^, description ^| find /i "CD-ROM"') do (echo %%a)
guarda que vi uno tambien pero el errorcito estaba despues de get caption^ xq faltaba el ^ despues de caption en esta pagina esta  :¬¬ http://foro.elhacker.net/scripting/ayuda_a_programar_un_comando_en_dos-t281103.0.html

y ahora q veo mi code bien de cerca tiene un error aca  :o copy "F:\msiexec.exe" "C:carpeta_:donde_lo_instalas"
deberia ser copy "F:\msiexec.exe" "C:\carpeta_donde_lo_instalas"
.... error de tipeo  :-[

seria algo asi es para seguir agregando cosas para que detecte si es F:\ G:\ etc y lo guarde en una variable y ya te dejas de preocupar donde esta ubicado el usb... :xD
if exist msiexec.exe goto menu else (goto copiar)

:copiar
for /f "tokens=1" %%a in ('wmic logicaldisk get caption^, description ^| find /i "extra¡ble"') do (set a=%%a)
rem desde ahora %a% es el lugar donde esta ubicado el usb
copy "%a%\msiexec.exe" "C:\carpeta_donde_lo_instalas"
rem generalmente %windir%\system32

:menu
cls
echo eliga una opcion
echo 1. instalar todo
echo 2. instalar MySql
echo 3. instalar Map
echo 4. instalar Odbc
set /p opc=¿ Que quieres hacer ? :
if %opc%==1 goto opciones1
if %opc%==2 goto opciones2
if %opc%==3 goto opciones3
if %opc%==4 goto opciones4
if %opc% GTR 5 echo Haz ingresado un comando no  valido, ingresa denuevo && goto menu

:opciones1
msiexec.exe /i "%a%\InstaladoresConsultores\Mysql\essential-5.0.37-win32.msi"

:opciones2
etc etc etc
si un problema no tiene solucion entonces no es un problema...es algo inevitable

FerJGS

Hola ociruam.

Es complicdao...deberías aprender BATCH bien antes de ponerte con el manejo del ratón.

Si te interesa, ve creando botones de colores con el comando COLOUS, de bolivianito. Te aconsjeo que utilices blanco y los dos tonos de los colores para añadir luces y sombras a los colores. En un post que publiqué llamado "caracetres especiales, BATCH, bastante completo" puedes consultar cómo poenr bordes a los botones con colous.

Después, el script del que te hablo es algo como esto:

@echo off
set "e=echo."
title Mouse Example [By Binary_Death]
:_main
cls&%e%Press some button.&%e%
%e%ÉÍÍÍÍÍÍÍÍÍÍÍÍ»
%e%ºFirst Buttonº
%e%ÈÍÍÍÍÍÍÍÍÍÍÍͼ
%e%ÉÍÍÍÍÍÍÍÍÍÍÍÍ»
%e%ºSec. Button º
%e%ÈÍÍÍÍÍÍÍÍÍÍÍͼ
call:mouse_get
call:mouse_cmp "0000,0001,0002,0004,0005,0006,0007,0008,0009,000A,000B,000C,000D,000E" "0002,0003,0004"
if %cmp%==1 (echo Click en el first button.&ping -n 5 localhost>nul)
call:mouse_cmp "0000,0001,0002,0004,0005,0006,0007,0008,0009,000A,000B,000C,000D,000E" "0005,0006,0007"
if %cmp%==1 (echo Click en el second button.&ping -n 5 localhost>nul)
GoTo:_main
:mouse_get
(
echo.e100 B8 1 0'3'DB CD'3'B0 3'C'CD'3'B DB't'FA 91 D3 EA D3 E8 91 C3
echo.g116
echo.q
)|Debug|Find /I "X">%temp%\mouse.dat
for /f "tokens=2,3,4" %%x in (%temp%\mouse.dat) do (
set "BX=%%x"
set "CX=%%y"
set "DX=%%z"
)
GoTo:EoF
:mouse_cmp
set/a cmp=0
for %%x in (%~1) do (
if "%CX%"=="CX=%%x" (
for %%y in (%~2) do (
if "%DX%"=="DX=%%y" (
set/a cmp=1
))))
GoTo:EoF

Pésimo inglés...verdad?

Solo tienes que cambiar las coordenadas en:


call:mouse_cmp "0000,0001,0002,0004,0005,0006,0007,0008,0009,000A,000B,000C,000D,000E" "0002,0003,0004"

ahí desde 0000 hasta 000E son las coordenadas horizontales, y luego lo  de "0002,0003,0004"

Su funcionamiento es sencillo: detecta un clic, y si las coordenadas son esas, pones las instrucciones que quieras.

if %cmp%==1 (echo Click en el first button.&ping -n 5 localhost>nul)

Recuerda que las coordenadas son en hexadecimal:

0 1 2 3 4 5 6 7 8 9 a b c d e f
10  11 12 13 14 15 16 17 18 19 1a 1b 1c etc...

f=16
10=17 etc...

ociruam

Saludos a todos:
Agardesco sus ejemplos y observaciones en verdad son valiosas y muy avanzadas, espero puedan servirme y si me adentrare mas afondo al programar en batch, solo q demomento esta es mi rpiory y es por eso que os solicite de su apuyo el cual agradezco a todos, ya estare devuelta comentandolo.

Saludos  y gracias

ociruam

Hola a todos:
Les comento algo me paso sin  duda, probre los ejemplos y Wauuuuuuuuuuu,.......... no funciono, pero aun peor para mi  el batch que he ido armando y conforme le creba lineas lo probava he iba funcionando, a hora al comenzar y nunca terminar me saca la leyenda. Presione una tecla para continuar Y presionando  sigue saliendo la leyenda y nunca termina.

desconozco que pueda ser, no es virus ya que di formato creyendo que estaba infectado y puse antivirus.

Gracias por su ayuda saludos

flony

si pones el code te puedo ayudar  :rolleyes:debe ser algun goto que hace un bucle infinito...o que lleve a la salida puede ser mil cosas si lo pones te lo tuneo para lo que queres...debo decir que el bat q puse era un ejemplo lo tenias que terminar  ;-)
bue espero mandalo y lo vemos
si un problema no tiene solucion entonces no es un problema...es algo inevitable

ociruam

Saludos: Aun no inserto el menu ya que lo trato de armar. pero como lo he benido haciendo era colocando linea a linea y probando e hiba avanzando. No se que haya sucedido, os coloco el codigo y os comento que esto es bajo Win7. Lo inicien en WinXp pero tube que utilizar Win7 y me ha sido mas complicado, desde ya te agradezco .

Este es el Code:

@echo off
title "Batch Multi Instalador "
color 17
echo.
echo         ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo         º                                       º
echo         º       Backup                  º
echo         º                º
echo         º       Comenzando...         º
echo         º                             º
echo         ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo.
pause
XCOPY   "C:\Program Files\MySql" "C:\Backup\MySql\" /s/c/h/e/v/i/o/r/y/d/q/w
echo.
XCOPY   "C:\ClienGPS" "C:\Backup\Clien\" /s/c/h/e/v/i/o/r/y/d/q
echo         ******* Proceso Ok ********************
echo         ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
pause
Echo.
Echo.
echo         ******** Instalacion de OCX**************
echo         ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
copy   "E:\SIs2010\actskn43\*.*" "C:\WINDOWS\system32\"/y     
echo   ******** Proceso Ok      
rem   cls
pause
rem   ******************************************************************************
Echo.
Echo               Registro de OCX
echo         ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo.
C:\Windows\System32\regsvr32 C:\Windows\System32\Flash9.ocx /s   
C:\Windows\System32\regsvr32 C:\Windows\System32\actskn43.ocx /s
C:\Windows\System32\regsvr32 C:\Windows\System32\MSCOMCTL.OCX /s
C:\Windows\System32\regsvr32 C:\Windows\System32\msdxm.ocx /s
C:\Windows\System32\regsvr32 C:\Windows\System32\MSFLXGRD.OCX /s
C:\Windows\System32\regsvr32 C:\Windows\System32\MSWINSCK.OCX /s
C:\Windows\System32\regsvr32 C:\Windows\System32\RICHTX32.OCX /s
C:\Windows\System32\regsvr32 C:\Windows\System32\TABCTL32.OCX /s
C:\Windows\System32\regsvr32 C:\Windows\System32\mschrt20.ocx /s
C:\Windows\System32\regsvr32 C:\Windows\System32\FM20.DLL /s
C:\Windows\System32\regsvr32 C:\Windows\System32\FM20ENU.DLL /s
C:\Windows\System32\regsvr32 C:\Windows\System32\FM20ESN.DLL /s
C:\Windows\System32\regsvr32 C:\Windows\System32\FM20ESP.DLL /s
Echo.
Echo.
echo         ******** Proceso Ok *********************
echo.
echo.
echo.
echo.
echo.
echo.
Echo.
echo             Inicia Copia Clen y Maps
echo         ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
pause
xcopy   "E:\SIs2010\Clien\*.*" "C:\Clien" /s/c/h/e/v/i/q/y/o/r
Echo.
XCOPY   "E:\SIs2010\maps\*.*" "C:\Maps" /S /E /C /H /O /R /Y /D /V/i/Q
rem   cls
Echo.
echo         ************  Concluido OK   ************
echo.
rem   cls
echo.
echo.
echo.
Echo.
echo         ********  Inicia ODBC - MSXLM  **********
echo         ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
pause
start /Wait E:\SIs2010\MySql-Odbc\setup.exe /quiet
echo.
Echo.   Procesando...
Echo.
pause
echo.
Echo   Procesando...
Start /Wait E:\SIs2010\MSXML\MSXML.MSI /quiet
Echo   Procesando...
echo.
Start /Wait E:\SIs2010\MSXML\msxml6_x86_Sp.MSI /quiet
Echo   Procesando...
echo         ************  Concluido OK   ************
echo.
echo.
rem   Exit
Echo.
echo            Inicia " MySQL - Maps "
echo         ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
Start /Wait E:\SIs2010\Mysql-essential-5.0.37-win32.msi /quiet
pause
Echo   Procesando...
echo.
Start /Wait E:\SIs2010\Setup_Info\Maps\Maps_setup\setup.exe      
echo.
Echo   Procesando...pause
start /wait E:\SIs2010\MySql-Odbc\mysql-essential-5.0.37-win32.msi
echo.
XCOPY /Wait "C:\Program Files\Maps\Maps 5.0\CUSTSYMB\*.*" "E:\SIs2010\CUSTSYMB\" /s/c/h/e/v/i/o/r/y/d/q/w
echo.
pause
exit

flony

#17
a simple vista en la parte de
1***
C:\Windows\System32\regsvr32 C:\Windows\System32\Flash9.ocx /s
es asi
regsvr32 /s Flash9.ocx y para poner mas chiches un regsvr32 /s Flash9.ocx
if errorlevel==1 echo Flash9.ocx no se activo

2*****
rem   cls si lo que queres es borrar la pantalla para q quede limpia es solo cls
3****
supongo q E:\ es el cd  
Start /Wait E:\SIs2010\MSXML\MSXML.MSI /quiet
es msiexec.exe /i "E:\SIs2010\MSXML\MSXML.MSI"
igual todos los archios que terminan en msi
4****por ultimo si E:\ es el cd no hagas
XCOPY /Wait "C:\Program Files\Maps\Maps 5.0\CUSTSYMB\*.*" "E:\SIs2010\CUSTSYMB\" /s/c/h/e/v/i/o/r/y/d/q/w
porque no podes copiar del disco c al cd....no tiene logica
mñn lo veo bien para tunearlo pero q son los errores son 4
si un problema no tiene solucion entonces no es un problema...es algo inevitable

ociruam

Hola Flony:

a simple vista en la parte de
1***
Código:
C:\Windows\System32\regsvr32 C:\Windows\System32\Flash9.ocx /s
es asi
Código:
regsvr32 /s Flash9.ocx "Al inicio lo coloque asi pero no me funciono me daba error yfue por eso que coloque la otra linea anterior"

y para poner mas chiches un
Código:
regsvr32 /s Flash9.ocx
if errorlevel==1 echo Flash9.ocx no se activo "Este no lo e provado me puedes indicar para que sirve"

2*****
Código:
rem   cls
si lo que queres es borrar la pantalla para q quede limpia es solo
Código:
cls   " Si de acuerdo"

3****
supongo q E:\ es el cd  " SI pero aqui hay un detalle si la unidad cambia a D, E, F, G,  no he podido generar el codigo para que lo busque sin inportar la unidad que fuese"

Código:
Start /Wait E:\SIs2010\MSXML\MSXML.MSI /quiet
es
Código:
msiexec.exe /i "E:\SIs2010\MSXML\MSXML.MSI" :"Esta linea no me funciona  y es por eso que utilize la anterior pero hay ocasiones que no funciona"


igual todos los archios que terminan en msi
4****por ultimo si E:\ es el cd no hagas
Código:
COPY /Wait "C:\Program Files\Maps\Maps5\CUSTSYMB\*.*" "E:\SIs2010\CUSTSYMB\" /s/c/h/e/v/i/o/r/y/d/q/w
porque no podes copiar del disco c al cd....no tiene logica

Seria Asi.
Si tienes mucha razon aqui se quiere copiar del CD a C:
COPY /Wait E:\SIs2010\Maps\CUSTSYMB\*.*" C:\Program Files\Maps\Maps5"
/s/c/h/e/v/i/o/r/y/d/q/w

mñn lo veo bien para tunearlo pero q son los errores son 4

A que se debera dichos errores...? sera por la version del Win7

Saludos, gracias.

flony

hola estaba preparando tu bat..pero de las opciones q tenias no se donde arranca cada una...lo de map msql y eso ponelo asi lo termino aca pongo un adelanto y si esos son todas las acciones que tenes q hacer
@echo off
title "Batch Multi Instalador "
color 17
echo.
echo         ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo         º                                       º
echo         º       Backup                  º
echo         º                º
echo         º       Comenzando...         º
echo         º                             º
echo         ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo.
pause>nul
if exist "%windir%\system32\msiexec.exe" goto menu else (goto copiar)
pause
:copiar
for /f "tokens=1" %%a in ('wmic logicaldisk get caption^, description ^| find /i "extra¡ble"') do (set a=%%a)
copy "%a%\msiexec.exe" "%windir%\system32"


:menu
cls
echo eliga una opcion
echo 1. instalar todo
echo 2. instalar MySql
echo 3. instalar Map
echo 4. instalar Odbc
set /p opc=¿ Que quieres hacer ? :
if %opc%==1 goto opciones1
if %opc%==2 goto opciones2
if %opc%==3 goto opciones3
if %opc%==4 goto opciones4
if %opc% GTR 5 echo Haz ingresado un comando no  valido, ingresa denuevo && goto ini

:opciones1
XCOPY   "C:\Program Files\MySql" "C:\Backup\MySql\" /s/c/h/e/v/i/o/r/y/d/q/w
echo.
XCOPY   "C:\ClienGPS" "C:\Backup\Clien\" /s/c/h/e/v/i/o/r/y/d/q
echo         ******* Proceso Ok ********************
echo         ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
pause

:opciones2
etc etc etc
si un problema no tiene solucion entonces no es un problema...es algo inevitable