Obtenga la "última" versión de un directorio de directorios
Una pregunta interesante, ya que es un lote de Windows! dir
es tu amigo aquí; pedir prestado a La respuesta de PabloG sobre SO :
@ECHO OFF
FOR /F %%I IN ('DIR *.* /B /O:G-N') DO ECHO %%I & EXIT /B
Colocar en RootFolder
llamado lastversion.bat
(o lo que sea). Puedes probar invocando desde cmd.exe
1 .
Tenga en cuenta que sólo he probado esto usando un muy muy número limitado de "como una versión" directorios con nombre de directorio.
Explicación
FOR /F %%I IN
- Lazo ( FOR
) a través del siguiente conjunto de archivos ( /F
), usando la variable I
( %%I
) 2
'DIR *.* /B /O:G-N'
- Listar todos los archivos ( *.*
) en el directorio, en formato simple ( /B
), clasificación /O:
) Invertir alfabéticamente 3 ( -N
) directorio primero ( G
) 4
DO ECHO %%I & EXIT /B
- Imprimir el primero nombre de archivo y terminar inmediatamente ( EXIT
) la solo archivo por lotes ( /B
)
Notas al pie adicionales
1 @ECHO OFF
suprime el eco de comandos , pero probablemente ya sabias eso
2 %%I
- use dos signos de porcentaje dentro de un archivo por lotes, o si se trata de un aviso interactivo, solo %I
3 revertir alfabéticamente significa que no nos importa qué versión realmente se escribió para durar y simplemente estamos obteniendo el número de versión más alto; esto podría no ser deseable
4 Agrupe los directorios primero para que los archivos sin formato se ordenen hasta el final y, por lo tanto, se ignoren.
-D
en lugar de-N
en elDIR
especificación. (Creo que tal vez lea mi enlace en lugar de la respuesta)Las clasificaciones numéricas "naturales" que reconocen y clasifican los números por su valor numérico son un dolor real con el lote de Windows. Se puede hacer, pero el hecho de que tenga varios números hace que el problema sea mucho más engorroso.
El problema se resuelve fácilmente con JSORT.BAT - una utilidad basada en script puro (JScript / batch híbrido) que se ejecuta de forma nativa en cualquier máquina Windows desde XP en adelante.
Para obtener simplemente una lista ordenada:
Para listar solo el número de versión más alto:
Para establecer una variable a la versión más alta:
fuente