Como buscar un ejecutable en el disco duro sabiendo solo 2 letras (Prxxx.exe)

Iniciado por P3NDULO, 27 Octubre 2014, 15:25 PM

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

P3NDULO

Buenas.
Como puedo hacer unprograma que busque y ejecute un programa que tengo guardado en c:..

Ejemplo: tengo un ejecutable, en varios equipos, pero cada uno de los tecnico que lo guardo le coloco un nombre distinto.
Necesito intakar Java. Pero le colocan varios nombre y varias versiones.
- jre-7-windows-i586
- Java 7
- jre-6u21-windows-i586
- jre-6u21-windows-i586(1) ... y exetera...
Bueno por eso quisiera hacer un programa que busque en un directorio espesifico los javas que tenga: seria algo asi


:: Segun los instaladores estan en esa carpeta tecnico
dir c:\tecnico\jre-*.exe /s


Eso me los listara. Como los guardo para selecionar uno, o como puedo buscar que ersion tengo instalada para asi no instalar una version anterior.
En lo posible como se haria una comparacion de la version instalada con la que voy a instalar, y en caso de que no este me arroje un error indicando que no hay javas para instalar.

tengo el codigo para chequear que sistema operativo es:


@ECHO OFF
mode con cols=60 lines=3
title Reconfigurador de JAVA
color 9f
REM XP Check
ver | findstr /i "5\.1\." > nul
IF %ERRORLEVEL% EQU 0 SET VER=XP-%PROCESSOR_ARCHITECTURE%

REM 7 Check
ver | findstr /i "6\.1\." > nul
IF %ERRORLEVEL% EQU 0 SET VER=WIN7-%PROCESSOR_ARCHITECTURE%

REM 8 Check
ver | findstr /i "6\.2\." > nul
IF %ERRORLEVEL% EQU 0 SET VER=WIN8-%PROCESSOR_ARCHITECTURE%


tambien puedo intalar uno de los javas si me se la direccion del programa

@echo off
mode con cols=60 lines=3
title Reconfigurador de JAVA
color 9f
"C:\Tecnico\Instaladores\Java\jre-7-windows-i586.exe" /passive


Gracias y disculpe que sea ten necio jejejeje.. feliz dia.
Claro si es con vbs, con bat, igual lo utilizaria.

Eleкtro

Cita de: P3NDULO en 27 Octubre 2014, 15:25 PMcomo puedo buscar que ersion tengo instalada para asi no instalar una version anterior.

Source:
Código (dos) [Seleccionar]
@Echo Off & Title Java Runtime Version Checker By Elektro
(Chcp 1252)1>NUL & :: Spanish Latin ISO.

:: Registry Settings.
Set "Registry.Root=HKEY_LOCAL_MACHINE"
Set "Registry.Key=SOFTWARE\JavaSoft\Java Runtime Environment"
Set "Registry.Value.CurrentVersion=CurrentVersion"
Set "Registry.Value.FamilyVersion=FamilyVersion"
Set "Registry.Value.BrowserVersion=BrowserJavaVersion"

:: String Variables to store results.
Set "Java.CurrentVersion="
Set "Java.FamilyVersion="
Set "Java.BrowserVersion="

:: Change working directory.
PUSHD "%SystemRoot%\System32"

:: Iterate the Java registry subkeys.
For /F "Tokens=1,2,*" %%a In (
'.\Reg.exe "Query" "%Registry.Root%\%Registry.Key%" /T "REG_SZ"'
) Do (
(
( :: Retrieve the Java Runtime Version.
Echo "%%a" | Find /I "%Registry.Value.CurrentVersion%"
) && (
Set "Java.CurrentVersion=%%c"
)

( :: Retrieve the Java Runtime Family Version.
Echo "%%a" | Find /I "%Registry.Value.FamilyVersion%"
) && (
Set "Java.FamilyVersion=%%c"
)

( :: Retrieve the Java Runtime Family Version.
Echo "%%a" | Find /I "%Registry.Value.BrowserVersion%"
) && (
Set "Java.BrowserVersion=%%c"
)
)1>Nul
)

:: Print Info.
Echo.Java Runtime Current Version: %Java.CurrentVersion%
Echo.Java Runtime Family  Version: %Java.FamilyVersion%
Echo.Java Runtime Browser Version: %Java.BrowserVersion%

:: Terminate execution.
POPD & :: Restore working directory.
Pause&Exit /B 0


Output:
Java Runtime Current Version: 1.7
Java Runtime Family  Version: 1.7.0_51
Java Runtime Browser Version: 10.51.2
Presione una tecla para continuar . . .


PD: No lo he probado en más equipos que el mio.

Saludos








P3NDULO

Cita de: Eleкtro en 27 Octubre 2014, 16:36 PM
Source:


PD: No lo he probado en más equipos que el mio.

Saludos

mande a guardar el resultado, en un TXT, para luego comprarlo con un numero


    :: Terminate execution.
    set ver=%Java.CurrentVersion%
    echo %ver% >c:\Tecnico\ver1java.TXT
    POPD & :: Restore working directory.
    Pause&Exit /B 0


tengo la busqueda y la guarde en un TXT:


@echo off
::mode con cols=50 lines=10
title Reconfigurador de JAVA
color
::"C:\Tecnico\Instaladores\Java\jre-7-windows-i586.exe" /passive
dir c:\Tecnico\jre-*.exe /s > java.txt
pause
exit


y cuando abro el TXT.. que por cierto no me abre jejejeje.. tengo que darle editar y veo esto.


El volumen de la unidad C no tiene etiqueta.
El n£mero de serie del volumen es: 8E2D-18B6

Directorio de c:\Tecnico\Instaladores\Java

27/06/2014  03:03 p.m.        16.062.240 jre-7-windows-i586.exe
               1 archivos     16.062.240 bytes

Directorio de c:\Tecnico\Programas

27/06/2014  03:03 p.m.        16.062.240 jre-6u21-windows-i586(1).exe
               1 archivos     16.062.240 bytes

     Total de archivos en la lista:
               2 archivos     32.124.480 bytes
               0 dirs  288.049.954.816 bytes libres


Como hafo para que esa busqueda sea el resultado como que mas limpia, y pues bueno, pueda ejecuatr el .exe en la ubicaion que este.

Muchas gracias @Eleкtro. Si sabes de algun librito, algun tutorial que tenga tantas cosas como las que tienes en la mente me avisas jajajaja,, que eres de verdad una enciclopedia.. Gracias.  ;D

Eleкtro

Cita de: P3NDULO en 27 Octubre 2014, 19:06 PMComo hafo para que esa busqueda sea el resultado como que mas limpia

No he entendido nada (literálmente, no se entiende la frase citada).

Primero veo que envias sl String que contiene la versión de Java al archivo "ver1java.TXT"

Luego haces una búsqueda recursiva y envias la salida al archivo "java.txt"

Por último dices que al abrir el archivo "java.txt" te sale esto de aquí abajo y lo consideras ¿un error?,

Citar El volumen de la unidad C no tiene etiqueta.
El n£mero de serie del volumen es: 8E2D-18B6

Directorio de c:\Tecnico\Instaladores\Java

¿que esperas que salga en el contenido del archivo?, sale lo que debe salir... el resultado de la búsqueda.

no se si me he perdido algo en lo que pretendes hacer o como lo pretendes hacer.


Cita de: P3NDULO en 27 Octubre 2014, 19:06 PMpueda ejecuatr el .exe en la ubicaion que este.

Puedes hacerlo por ejemplo procesando la salida del comando Dir /S con un For /F.

En el código que mostré tienes un ejemplo, en Google tienes miles, la cuestión es que aprendas a hacerlo por ti mismo viendo ejemplos.


For /f - Loop through text

Saludos








P3NDULO

 :huh:

Citar
@Eleкtro
No he entendido nada (literálmente, no se entiende la frase citada).

Al hacer la busqueda la guardo en un .TXT, para luego sacar el directorio de donde esta guarado el .exe
" Eso es lo que tengo que meter en el for que me dices, para que busque los parametros no?"


El volumen de la unidad C no tiene etiqueta.
El n£mero de serie del volumen es: 8E2D-18B6

Directorio de c:\Tecnico\Instaladores\Java

27/06/2014  03:03 p.m.        16.062.240 jre-7-windows-i586.exe
               1 archivos     16.062.240 bytes

Directorio de c:\Tecnico\Programas

27/06/2014  03:03 p.m.        16.062.240 jre-6u21-windows-i586(1).exe
               1 archivos     16.062.240 bytes

     Total de archivos en la lista:
               2 archivos     32.124.480 bytes
               0 dirs  288.073.433.088 bytes libres



Con ese TXT, despues que pase por el for, me deberia salir esto.



"C:\Tecnico\Instaladores\Java\jre-7-windows-i586.exe"



Al ya tener eso, lo puedo ejecutar tranquilamete.

Claro lo que quiero hacer es la automatizacion de una busqueda.
De pasar por inicio -> Equipo -> Disco Local -> Carpeta -> buscar en este directorio carpeta por carpeta el instalador. para luego instalarlo.


las version de java, la colocare para que haga una comparacion de el Java que esta instalado con los que tenemos en el quipo, osea si es el resultado de eso es :

1.8 entonces el java que esta en el equipo es un Java 8 actualizacion 25, entonces deberia instalar unversion igual o mayor.
Ejemplo en tu equipo es:
1.7 entonces el java que debemos instalar en el equipo es un Java 8 actualizacion 25. para eso es la comparacion, para que al momento de instalar el java, no instalemos una version anterior, porque estaran los 2 javas instalados.

de verdad discupa que escriba como muy Mal.



Eleкtro

Esto te ayudará a comparar:

Source:
Código (dos) [Seleccionar]
@Echo OFF

:: Este valor lo obtenemos del registro de Widnows con el Script de antes,
:: o también llamando a la aplicación "java.exe" pasándole el parámetro "-version".
Set "Java.FamilyVersion=1.7.0_51"

:: Obtengo el número de la versión.
Set "Installer.Version=%Java.FamilyVersion:~2,1%"

:: Obtengo el número de la actualización.
(Echo "%Java.FamilyVersion%" | Find "_")1>NUL && (
For /F "Tokens=2 Delims=_" %%# In ("%Java.FamilyVersion%") Do (
Set "Installer.VersionUpdate=u%%#"
)
)

Echo JavaRE Family Ver.   = %Java.FamilyVersion%
Echo JavaRE x86 Installer = jre-%Installer.Version%%Installer.VersionUpdate%-windows-i586.exe
Echo JavaRE x64 Installer = jre-%Installer.Version%%Installer.VersionUpdate%-windows-x64.exe
Echo.

Pause&Exit /B 0



Output:
JavaRE Family Ver.   = 1.7.0_51
JavaRE x86 Installer = jre-7u51-windows-i586.exe
JavaRE x64 Installer = jre-7u51-windows-x64.exe



Lo único que tienes que hacer es :
1) tomar los nombres de los instaladores equivalentes a la versión de java instalada, adaptando el código de arriba a tus necesidades.
2) realizar una búsqueda recursiva de los instaladores que están en la carpeta C:\tecnico, y tomar cada nombre de esos instaladores.
3) Comparar las versiones especificadas en los nombres d elos instaladores

Por ejemplo:
Código (dos) [Seleccionar]
@Echo OFF & SetLocal EnableDelayedExpansion

Set "Installer.Name=jre-7u51-windows-x64.exe"
set "JRE.Currentversion=825" & REM 8 update 25

REM hacer eso por cada instalador que haya en el directorio...
For /F "Tokens=2 Delims=-" %%# In ("%Installer.Name%") do (

set "versionFix=%%#"
Set "versionFix=!versionFix:u=!" & Rem Elimino el caracter "u"

If !versionFix! LEQ %JRE.Currentversion% (
Echo !VersionFix!: la version del instalador es igual o menor que la version actual de JavaRE.
else
               Start /W "Java" "%Installer.Name%" /s /v /qn MOZILLA="1" REBOOT="Suppress" JAVAUPDATE="0" EULA="1"
)

)

Pause&Exit /B 0


Saludos