es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Obtiene en lote los n archivos modificados más recientemente sin necesidad de utilizar múltiples bucles FOR.

Como se especifica en el título de la pregunta, tengo el siguiente comando DIR para obtener los archivos más recientemente modificados en cualquier directorio, siempre y cuando el comando o script con este comando se esté ejecutando en el mismo directorio cuya lista de archivos se desea filtrar.

dir /b /o:-d

Pero la particularidad aquí es que quiero limitar el número de archivos en la lista de archivos más recientemente modificados para poder ejecutar un bucle for en cada uno. Esta lista debe generarse sin usar múltiples bucles FOR, y no se me ocurre ninguna forma de hacerlo. Puedo recorrer toda la lista de la siguiente manera:

for /F “delims=” %%a in (‘dir /b /o:-d’) do echo %%a

¿Cómo puedo detener de manera confiable este bucle estrictamente cuando los últimos n archivos ya aparecen en la lista?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para limitar el número de archivos en la lista de archivos más recientemente modificados, puedes usar el comando SET para establecer una variable de contador y luego agregar una declaración IF dentro del bucle FOR para verificar si la variable de contador ha alcanzado el límite deseado.

    Aquí tienes un ejemplo de script que muestra los 3 archivos más recientemente modificados en el directorio actual:

    @echo off
    set count=0
    for /f "delims=" %%a in ('dir /b /o:-d') do (
      echo %%a
      set /a count+=1
      if !count! == 3 goto :exit_loop
    )
    :exit_loop
    echo Finalizada la enumeración de archivos.
    

    En este script, la variable count se establece en 0 antes de que comience el bucle. Dentro del bucle, cada vez que se lista un archivo, la variable count se incrementa en 1. Luego, una declaración IF verifica si count ha alcanzado 3 (el límite deseado) y, si es así, se sale del bucle utilizando el comando goto.

    Puedes modificar el valor de count y el límite en la declaración IF para adaptarlo a tus necesidades específicas.

Comments are closed.