Пакетные сценарии Windows: новейший файл, соответствующий шаблону

7392
Eddie Parker

Это будет молниеносно в Linux, но я недостаточно знаком с Windows-интерфейсом пакетного скриптинга.

По сути, я хочу найти серию файлов, соответствующих определенному шаблону, и получить файл с самой последней измененной датой.

Я получил, насколько:

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

Но я не уверен, какие существуют операторы сравнения или есть ли лучший способ сделать это.

Кто-нибудь предлагает какие-либо хорошие решения? В идеале это будет включать ванильную установку Vista; так что никакой особой хитрости, такой как cygwin / etc.

5

2 ответа на вопрос

3
Eddie Parker

Ах, нашел это:

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

Почти наверняка есть более разумный способ сделать это в PowerShell.
Но если это должен быть cmd.exe:

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

DIR /bперечисляет только имя файла, как ls -1хотелось бы; /odесть финиковой курс заказа.
Таким образом, последняя итерация устанавливает имя последнего файла в списке.