Как получить новейшее (в последний раз измененный) каталог [C#]

cd %windir%\system32\inetsrv

@echo off

for /F "tokens=* USEBACKQ" %%x in (      
        `appcmd list apppool /text:name`
       ) do (
            echo|set /p=  "%%x - " /text:name & appcmd.exe list apppool "%%x" /text:processModel.identityType
       )

echo %date% & echo %time%

pause
27
задан Shaitan00 31 May 2010 в 04:02
поделиться

4 ответа

без использования LINQ

DateTime lastHigh = new DateTime(1900,1,1);
string highDir;
foreach (string subdir in Directory.GetDirectories(path)){
    DirectoryInfo fi1 = new DirectoryInfo(subdir);
    DateTime created = fi1.LastWriteTime;

    if (created > lastHigh){
        highDir = subdir;
        lastHigh = created;
    }
}
14
ответ дан 28 November 2019 в 04:36
поделиться

Если вы создаете службу Windows и хотите получать уведомления о создании нового файла или каталога, вы также можете использовать FileSystemWatcher . По общему признанию не так легко, но интересно играть. :)

0
ответ дан Chad Ruppert 28 November 2019 в 04:36
поделиться

Вы можете использовать Directory. GetLastWriteTime (или Directory.GetLastWriteTimeUtc, это не имеет значения в данном случае, когда вы просто делаете относительные сравнения).

Хотя вы просто хотите посмотреть на "измененное" время, как сообщает ОС, или вы хотите найти каталог с последним измененным файлом внутри? Они не всегда совпадают (то есть, ОС не всегда обновляет время "последнего изменения" содержащегося каталога, когда изменяет файл).

1
ответ дан 28 November 2019 в 04:36
поделиться

Нерекурсивный:

new DirectoryInfo(path).GetDirectories()
                       .OrderByDescending(d=>d.LastWriteTimeUtc).First();

Рекурсивный:

new DirectoryInfo(path).GetDirectories("*", 
    SearchOption.AllDirectories).OrderByDescending(d=>d.LastWriteTimeUtc).First();
48
ответ дан 28 November 2019 в 04:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: