![]() |
[решено] Прошу прокомментировать данный код
Код:
@echo off SETLOCAL EnableDelayedExpansion for /f "delims==" %%a in ('ftype^|find /i "\notepad.exe"') do set "$f=!$f! /c:"=%%a"" for /f "delims==" %%a in ('assoc^|findstr/ie%$f%') do set "$x=!$x! %systemdrive%\*%%a" SETLOCAL DisableDelayedExpansion (for /f "delims=" %%a in ('dir /b/s/a-d %$x% 2^>nul') do ( for /f "tokens=1,2" %%b in ('dir/a/tc "%%a"^|findstr/iec:"%%~nxa"') do echo %%b %%c %%a ))>"%~dpn0.log" |
По хорошему, amel27 должен отвечать - его код. Но рискну. :)
ftype^|find /i "\notepad.exe" Команда ftype выводит типы файлов и связанные с ними приложения. Например: inifile=%SystemRoot%\System32\NOTEPAD.EXE %1 Следующей командой - find /i "\notepad.exe" отбираются только те из них, что связаны с Блокнотом. set "$f=!$f! /c:"=%%a"" Создается, скажем так, массив значений для использования в будущей команде findstr/ie%$f%. Выглядит, в конечном итоге, он примерно так: /c:"=inffile" /c:"=inifile" /c:"=Text" и т. д. То есть из всех типов файлов, связанных с Блокнотом. assoc^|findstr/ie%$f% Команда assoc выводит связанные с типами файлов расширения. Например: .txt=Text findstr/ie%$f% отбирает только те расширения, что относятся к типам файлов, которые переданы в переменную %$f%. Смотрится примерно так: findstr/ie /c:"=inffile" /c:"=inifile" /c:"=Text" set "$x=!$x! %systemdrive%\*%%a" Снова создается массив значений, теперь уже для команды dir /b/s/a-d %$x% 2^>nul. Он состоит из масок для вывода файлов. Примерно такой: %systemdrive%\*.ini %systemdrive%\*.inf %systemdrive%\*.txt. Где %systemdrive% - системный диск. dir /b/s/a-d %$x% 2^>nul Выводятся все файлы на диске, соответствующие маскам (dir /b/s/a-d %systemdrive%\*.ini %systemdrive%\*.inf %systemdrive%\*.txt). 2^>nul - игнорировать ошибки. dir/a/tc "%%a"^|findstr/iec:"%%~nxa" Получение времени создания файла. %%a - полученное имя файла из вышестоящего цикла. findstr/iec:"%%~nxa" - ищется строка с именем файла, поскольку командой dir/a/tc выводится несколько строк, а нужна именно строка с именем файла. tokens=1,2 - из этой строки отбираются только 1 и 2 элементы, разделенные пробелами (табуляцией). В переменную %%b помещается дата создания файла, в переменную %%c - время. Остальное все, я думаю, не представляет сложности для понимания. |
Спасибо!
А "SETLOCAL EnableDelayedExpansion" что? |
Чин Хон,
Инфа из интернета: Цитата:
|
Ясно, спасибо!
|
Время: 17:33. |
Время: 17:33.
© OSzone.net 2001-