Crear un .bat para buscar archivos

Iniciado por eXtm, 15 Febrero 2017, 10:13 AM

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

eXtm

Necesito crear un .bat que :
Me pida escribir una palabra y este me busque archivos que se llamen así, pero con cualquier extension.

y me muestre las rutas.

Los problemas que tengo al hacer esto son dos
_________

Código (dos) [Seleccionar]
@echo off
echo ¿Que archivo quieres buscar?
set /p file=
If Exist "%file%" (echo hola)

pause

_________
Tal como esta si quisiese buscar un archivo tendria que poner "prue.txt" y yo necesito que no me pida poner la extension. Imagino que sera con un .* pero no se como ponerlo con la variable.
Otro problema seria el que me muestre la ruta. (Este comando iría donde esta el echo hola. Esto lo puse para ver si me funcionaba) y no se que comando es.

Lo he estado buscando por un rato y no encuentro la solución, le pregunte a mi profesora pero no me soluciono nada (como siempre   :xD) asi que os agradeceria que me echaseis un cable .

Eleкtro

#1
Hola.

Puedes hacerlo de la siguiente manera:
Código (dos) [Seleccionar]
@Echo OFF & (CHCP 1252)1>NUL

Echo:¿Qué archivo quieres buscar?.
Set /P "filename="
CLS

:: Aquí puedes optar por interpretar el valor de "%filename%" como un nombre de archivo parcial, o un nombre completo.

Set "search=*%filename%*.*" & REM Partial Filename
REM Set "search=%filename%.*" & REM Full Filename

For %%# In ("%search%") Do (
   Echo "%%~f#"
)

Pause
Exit /B 0


Asignando el término "setup" para la búsqueda, esto sería un resultado de ejecución aleatorio de una búsqueda por nombre parcial:
DSETUP.DLL
DSETUP16.DLL
DSETUP32.DLL
locSetup.exe
MCMsetup.exe
setup.exe


Y esto de una búsqueda por nombre completo:
setup.exe

Saludos!








eXtm

#2
Gracias por tomate tu tiempo para responder pero si no es mucha molestia podrias explicarme que significa"  & (CHCP 1252)1>NUL  " es la primera vez que lo uso y no entiendo su funcion.

Eleкtro

#3
Cita de: eXtm en 16 Febrero 2017, 10:28 AMpodrias explicarme que significa"  & (CHCP 1252)1>NUL  "

Hola.

El propósito de {n}>NUL sirve para redireccionar un stream especifico de un comando o proceso, donde {n} en este caso es "1", el buffer de salida (1 = STDOUT) y se redirecciona hacia "Nulo", es decir, nada, u oculto. Dicho de otra forma, 1>NUL sirve para ocultar el mensaje del comando. En otros casos podriamos usar 2>NUL para ocultar el mensaje de error (2 = STDERR), o 1>NUL 2>&1 para ocultar ambos, etc.




Sobre el comando CHPC, bueno...

Cuando desconozcas el propósito de un comando, siempre puedes ver la ayuda del comando en la consola escribiendo "/?" al final del nombre de dicho comando:

CHCP /?

Esto nos mostrará lo siguiente:
Cita de: CMDMuestra o establece el número de la página de códigos activa.

CHCP [nnn]
 nnn   Especifica una página de códigos.

Escriba CHCP sin parámetro para mostrar el número de la página de códigos activa.

Y esto viene a decirnos, que el comando CHCP sirve para modificar el modo en el que la consola representa los caracteres en pantalla usando un código de páginas de Windows específico, o dicho de otra forma, un set de caracteres específico, en este caso CHCP 1252 corresponde a Windows Latin 1 (ANSI):






Te preguntarás por que he usado el comando CHCP si parece que en tu script no haga falta usarlo, y en principio es verdad, simplemente lo utilizo en todos mis scripts para conservar las buenas costumbres, puesto que la consola o CMD por defecto utiliza el código de página 850 y esto no representa correctamente los caracteres del Castellano.

Te mostraré un ejemplo breve para que comprendas la diferencia:

Script.cmd
Código (dos) [Seleccionar]
@Echo OFF

(CHCP 1252)1>NUL
Echo áéíóú

(CHCP 850)1>NUL
Echo áéíóú

Pause&Exit


Resultado de ejecución:
Citaráéíóú
ßÚݾ·
Presione una tecla para continuar . . .