Scripting em lote do Windows: o arquivo mais recente que corresponde a um padrão

5

Isso seria muito rápido no Linux, mas eu não estou familiarizado o suficiente com o sabor do Windows de scripts em lote.

Basicamente, quero procurar uma série de arquivos que correspondam a um determinado caractere curinga e obter aquele com a data de modificação mais recente.

Eu cheguei até onde:

for %%X in (*.exe) do (
REM Do stuff....
)

Mas não tenho certeza de que tipo de operadores de comparação existem, ou se há uma maneira melhor de fazer isso.

Alguém oferece alguma boa solução? O ideal seria envolver uma instalação simples do Vista; então nenhum truque especial como cygwin / etc.

    
por Eddie Parker 24.03.2010 / 00:00

2 respostas

3

Ah, achei:

for /f %%x in ('dir *.exe /B /O:-D') do set NEWEST_EXE & goto DONE

:DONE
    
por 24.03.2010 / 00:14
1

Há quase certamente uma maneira mais sensata de fazer isso no PowerShell.
Mas se tem que ser cmd.exe:

FOR /f %f IN ('DIR /b /od *.exe') DO @SET last=%f

ECHO %last%

DIR /b lista apenas o nome do arquivo, como ls -1 faria; o /od é, naturalmente, ordem de data.
Então, a última iteração define o nome do último arquivo da lista.

    
por 24.03.2010 / 00:13