Objetivo: me gustaría buscar un tipo específico de archivos en una sola carpeta. Filtrado por un patrón de nombre de archivo específico (por ejemplo, "archivo") y también ordenado por nombre de archivo, el resultado se vería así:
file101.txt
file212.txt
file432.txt
Ahora, me gustaría seleccionar solo el último elemento (aquí: file432.txt
) y realizar operaciones adicionales (por ejemplo, copiar y renombrar) en ese archivo.
¿Como podría hacerlo?
Lo que tengo hasta ahora es el siguiente:
@echo off
setlocal
set list=
for /r . %%g in (file*.txt) do echo %%g
.. que me da la lista presentada en la parte superior de mi pregunta.
Por lo que yo entiendo, no hay una lista real, es solo una cadena con caracteres de retorno / nueva línea. En consecuencia, realmente no puedo seleccionar un elemento de resultado de búsqueda específico. Habría usado otro for
bucle pero no sé exactamente para qué patrón filtraría a excepción de EOF. La única idea que tengo es eliminar todos los caracteres de nueva línea y guardar el resultado en una variable. Ahora, cada nueva línea que se encuentre sobreescribirá la anterior.
¿Cómo haría esto?
set lastitem=for %%g in (%list%) do REMOVE_NEWLINE and echo %%g
/R
La opción se usa para ir a las subcarpetas. Por lo tanto, la respuesta que aceptó no funcionará si necesita hacerlo ya que los archivos se ordenan por cada carpeta a la que se accede durante la ejecución. Todo se genera alfanuméricamente según la carpeta y el nombre del archivo. Este código también funciona solo si todos los archivos tienen la misma estructura de nombre de archivo. Si alguno de los nombres de sus archivos tiene más o menos caracteres numéricos, puede o no obtener el nombre del archivo que es el número numérico más grande.
/O
interruptor dedir
mando. Leerdir /?
para los posibles valores de orden de clasificación.