Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: eXtm en 15 Febrero 2017, 10:13 am



Título: Crear un .bat para buscar archivos
Publicado por: eXtm en 15 Febrero 2017, 10:13 am
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
  1. @echo off
  2. echo ¿Que archivo quieres buscar?
  3. set /p file=
  4. If Exist "%file%" (echo hola)
  5.  
_________
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 .


Título: Re: Crear un .bat para buscar archivos
Publicado por: Eleкtro en 15 Febrero 2017, 12:32 pm
Hola.

Puedes hacerlo de la siguiente manera:
Código
  1. @Echo OFF & (CHCP 1252)1>NUL
  2.  
  3. Echo:¿Qué archivo quieres buscar?.
  4. Set /P "filename="
  5. CLS
  6.  
  7. :: Aquí puedes optar por interpretar el valor de "%filename%" como un nombre de archivo parcial, o un nombre completo.
  8.  
  9. Set "search=*%filename%*.*" & REM Partial Filename
  10. REM Set "search=%filename%.*" & REM Full Filename
  11.  
  12. For %%# In ("%search%") Do (
  13.    Echo "%%~f#"
  14. )
  15.  
  16. 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:
Código:
DSETUP.DLL
DSETUP16.DLL
DSETUP32.DLL
locSetup.exe
MCMsetup.exe
setup.exe

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

Saludos!


Título: Re: Crear un .bat para buscar archivos
Publicado por: eXtm en 16 Febrero 2017, 10:28 am
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.


Título: Re: Crear un .bat para buscar archivos
Publicado por: Eleкtro en 22 Febrero 2017, 05:02 am
podrias 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:

Código:
CHCP /?

Esto nos mostrará lo siguiente:
Cita de: CMD
Muestra 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):

(https://i-msdn.sec.s-msft.com/dynimg/IC68553.gif)



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
  1. @Echo OFF
  2.  
  3. (CHCP 1252)1>NUL
  4. Echo áéíóú
  5.  
  6. (CHCP 850)1>NUL
  7. Echo áéíóú
  8.  
  9. Pause&Exit

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