Script para buscar archivos en Windows

Buscar archivos a veces resulta más rápido y ligero si lo hacemos desde la línea de comandos, en vez de hacerlo mediante una aplicación gráfica como el explorador de archivos de Windows.


Aprovechando la eficiencia del comando WHERE se puede hace un script .bat en donde, cada vez que necesitemos buscar algún archivo, sólo tengamos que ejecutarlo e indicar que buscar y en dónde.





Para crearlo sólo tenemos que abrir un editor de texto plano como Notepad (bloc de notas), copiar el código indicado a continuación y guardar el archivo con extensión .bat

Código a introducir en el archivo, que podríamos llamar por ejemplo "buscador.bat":

@echo off
rem autor: InformaticCity
rem fecha: 21/05/2018
title=Buscador de archivos
rem El color puede modificarse a gusto del usuario editando el número a continuación
color 57
echo.
echo============================================================
echo= =
echo= BUSCADOR DE ARCHIVOS =
echo= =
echo============================================================
echo.
rem Volver a ejecutar en caso de seguir buscando
:retorno
echo.
rem Declaración de las variables a usar
set ruta=0
set cadena=exit
rem Se pide al usuario que introduzca la unidad de donde quiere buscar
set /p ruta= Unidad de disco (C, D, etc.):
rem Si no introduce ningún valor da error
if %ruta%==0 goto retorno
echo.
rem Se pide al usuario que introduzca una cadena de texto para buscar
rem Previamente se establece un punto de retorno si hay error
:error
set /p cadena= Archivo (nombre o parte del mismo):
rem Si no introduce nada dara error
if %cadena%==exit goto error
echo.
echo.
rem Si todas las condiciones se cumplen se ejecuta la búsqueda y devuelve resultado
where /t /r %ruta%:\ *%cadena%* | more
echo.
echo.
rem Se pregunta al usuario si quiere salir del programa o quiere buscar de nuevo
set /p seguir= ¿Volver a buscar? (s/n):
rem Si quiere el usuario quiere continuar ha de escribir una 's' ó una 'S'
if %seguir%==s (goto retorno) else (goto next0)
:next0
if %seguir%==S (goto retorno) else (goto exit)
echo.
echo.
rem Si se decidió no seguir buscando el programa finaliza
exit





Para utilizarlo debemos simplemente:


1 - Hacer doble clic sobre el archivo
2 - Indicar en qué unidad queremos buscar
3 - Indicar que queremos buscar
4 - Al finalizar preguntará si deseamos volver a buscar o salir





Funciona en Windows Vista/7/8/10


Comentarios

  1. Que línea tendría que añadir al script buscador.bat? si quiero que en caso de que me encuentre el fichero que yo le he indicado, lo copie a una ruta que yo le indique?
    Muchas gracias!! me ha venido bien el script

    ResponderEliminar
    Respuestas
    1. Hola y disculpa la demora en la respuesta. Una posible solución sería añadir un fragmento de código para preguntar si se quiere copiar. Pero ojo si hay más de un archivo! Se podría añadir algo así:
      where /t /r %ruta%:\ *%cadena%* > resultados.txt
      more resultados.txt
      echo.
      echo.
      rem preguntar si se desea copiar el archivo
      set /p copiar= ¿Desea copiar el archivo? (s/n)
      if %copiar%==s (goto next1) else (goto next2)
      :next1
      set /p destino= Indicar la ruta completa de destino:
      set copiar=<resultados.txt
      xcopy %copiar% %destino%
      del resultados.txt
      echo archivo copiado en %destino%
      :next2
      echo.
      rem Se pregunta al usuario si quiere salir del programa
      set /p seguir= ¿Volver a buscar? (s/n):

      Espero que te pueda ayudar
      Saludos

      Eliminar
  2. hola, consulta si quisiera borrar todos los archivos que busco el scrip como seria.
    gracias por su respuesta.

    ResponderEliminar
  3. Hola damian007. Esto te recomiendo que lo hagas con cuidado porque podrías borrar algo que no quisiseras, y es un poco peligroso. Lo más aconsejable sería exportar quizá a un txt, pero igualmente de dejo el fragmento de código aquí. Como verás sustituiría desde el 'where' hasta donde pregunta si quieres volver a buscar:

    where /f /r %ruta%:\ *%cadena%* | more
    rem Preguntar si se quiere eliminar los archivos
    set /p eliminar= ¿Desea eliminar los archivos encontrados? (s/n):
    if %eliminar%==s (goto next1) else (goto next2)
    rem En caso de que no quiera seguir se irá al punto en que pregunta volver a buscar
    if %eliminar%==S (goto next1) else (goto next2)
    :next1

    for /R C:\ %%f in (*%cadena%*) do del /q "%%~ff"
    echo.
    :next2
    rem Se pregunta al usuario si quiere salir del programa o quiere buscar de nuevo
    set /p seguir= ¿Volver a buscar? (s/n):

    Espero que te pueda ayudar. Saludos!

    ResponderEliminar
  4. Hola, muy buen aporte con el script que te ayuda a buscar. Tal vez no se si es posible me gustaria ver la manera que mediante un script en un archivo.txt poder buscar y reemplazar texto. muchas gracias por la ayuda.

    ResponderEliminar
    Respuestas
    1. Una forma más sencilla sería hacerlo con Powershell que ya incorpora esa función, por ejemplo:

      <#
      Script para reemplazar una cadena de carácteres dentro de un archivo .txt

      #>

      Write-Host "SUSTITUIR UNA CADENA DENTRO DE UN TXT"
      Write-Host "-------------------------------------"
      $ruta = Read-Host -Prompt "Ruta completa o relativa al archivo (ejemplo: C:\prueba.txt): "
      $cadenaVieja = Read-Host -Prompt "Indica la cadena a buscar en el documento: "
      $cadenaNueva = Read-Host -Prompt "Indica la nueva cadena que la sustituirá: "
      (Get-Content $ruta) | ForEach-Object {$_ -replace "$cadenaVieja", "$cadenaNueva"} | Set-Content $ruta
      Write-Host "Hecho!"

      Eliminar
  5. Excelente trabajo, claro y bien explicado, funciona perfectamente, felicitaciones y muchas gracias por tu ayuda

    ResponderEliminar
  6. hola amigo, este scrip funciona bien, que codigo puedo agregarle para;
    al abrir el programa automaticamente me busque el nombre de algunos archivos que yo agregue al script y de la misma forma que solo me busque en la carpeta donde lo estoy ejecutando

    ResponderEliminar
  7. Excelente aporte amigo, como haria si quiero que me encuentre una carpeta que conozco parte del nombre y me devuelva la ruta

    ResponderEliminar
  8. ¡Buenos días!
    El SCRIPT es una maravilla, pero me gustaría averiguar cómo añadir para qué busque cualquier carpeta y/o archivo de un período de tiempo en concreto. Una vez encontrados, qué de la opción de eliminarlos a la Papelera de Reciclaje ó definitivamente.
    Muchas gracias y un saludo.

    ResponderEliminar

Publicar un comentario

Deja aquí tu comentario

Entradas populares