bat-поиск файла

Как будет выглядеть сценарий поиска файла, в определённой папке, имеющий последнюю дату создания?
Спасибо)  

1 комментарий

  • Я придумал такой трюк:

    @echo off
    SETLOCAL ENABLEEXTENSIONS
    FOR /F %%f IN (‘dir *.* /b /a-d /o-d’) DO set newestfilename=%%f & goto end
    :end
    echo The newest file is %newestfilename%
    set newestfilename=

    Команда
    dir *.* /b /a-d /o-d
    ищет все файлы совпадающие с маской (*.*) кроме директорий (/a-d) в текущем каталоге, сортирует их по дате в порядке убывания (/o-d), т.е. от новых к старым, самый новый первой строкой и выводит только их имена (ключ /b) на стандартный вывод.
    Её вывод скармливается команде FOR с ключом /F (для работы ключа /F надо включить расширенную обработку команд через SETLOCAL ENABLEEXTENSIONS), которая разбивает вывод на строки и для каждой выполняет команду после DO. Первая же строка (содержащая имя новейшего файла) записывается в переменную %newestfilename% командой SET, после чего сразу выполняется выход из цикла на метку :end.
    После этого можно использовать переменную %newestfilename% как угодно.

    Если нужно искать в определенном каталоге, то предварительно сделай его текущим командой cd.