Respostas:
Uma questão interessante, já que é o lote do Windows! dir
é seu amigo aqui; empréstimo de A resposta de PabloG sobre SO :
@ECHO OFF
FOR /F %%I IN ('DIR *.* /B /O:G-N') DO ECHO %%I & EXIT /B
Colocar em RootFolder
nomeado lastversion.bat
(como queiras). Você pode testar invocando a partir de cmd.exe
1 .
Por favor, note que eu só testei isso usando um muito muito número limitado de "versão-like" diretórios nomeados pelo diretório.
FOR /F %%I IN
- Loop ( FOR
) através do seguinte conjunto de arquivos ( /F
), usando a variável I
( %%I
) 2
'DIR *.* /B /O:G-N'
- Listar todos os arquivos ( *.*
) no diretório, em formato simples ( /B
), classificação ( /O:
) em ordem alfabética inversa 3 ( -N
) diretório-primeiro ( G
) 4
DO ECHO %%I & EXIT /B
- Imprima o primeiro filename e terminar imediatamente ( EXIT
) a apenas arquivo em lote ( /B
)
1 @ECHO OFF
suprime o comando ecoando , mas você provavelmente já sabia disso
2 %%I
- use dois sinais de porcentagem dentro de um arquivo de lote, ou se de um prompt interativo, apenas %I
3 inverter alfabeticamente significa que não estamos nos importando com qual versão foi realmente escrita para durar e apenas pegando o maior número de versão; isso pode não ser desejável
4 diretórios de grupos primeiro, para que arquivos simples sejam classificados no final e, assim, ignorados
-D
ao invés de -N
no DIR
especificação. (Eu acho que você talvez leia meu link em vez da resposta!)
As classificações numéricas "naturais" que reconhecem e classificam os números por um valor numérico são uma dor real com o lote do Windows. Isso pode ser feito, mas o fato de você ter vários números torna o problema muito mais complicado.
O problema é facilmente resolvido com JSORT.BAT - um utilitário puro baseado em script (híbrido JScript / batch) que é executado nativamente em qualquer máquina Windows do XP em diante.
Para simplesmente obter uma lista ordenada:
dir /b /ad RootFolder | jsort /n
Para listar apenas o número da versão mais alta:
dir /b /ad RootFolder | jsort /n /r /c 1
Para definir uma variável para a versão mais alta:
@echo off
setlocal
for /f "delims=" %%F in ('dir /b /ad RootFolder ^| jsort /n /r /c 1') do set "largest=%%F"