Windows, командная строка, необходимо создать вывод файла.txt, содержащий все файлы из большого и сложного дерева каталогов с одной (1) строкой для каждого файла, как:
CreationDateYYYYMMDD-HHMMSS, LastModifiedYYYYMMDD-HHMMSS, размер файла [без запятых K], имя файла.ext
Например:
20100101-174503, 20120202-191536, 1589567, myfile.ext
Список не должен содержать строки с именами каталогов и т. д., только имена файлов, даже если один и тот же файл присутствует более одного раза. Время в 24-часовом формате.
dir /s/t:c/t:w/-c > filelist.txt
Команда точно не работает таким образом.
Решение проблемы
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=c:\program files"
FOR /f "delims=" %%a IN (
'dir /s /b /a-d "%sourcedir%\*" '
) DO (
FOR %%d IN (timewritten timecreated) DO SET "%%d="
FOR %%k IN (-d s h) DO (
IF NOT DEFINED timewritten FOR /f "tokens=1,2 delims= " %%d IN ('dir /tw %%~k "%%a" 2^>nul ^|find "%%~nxa"') DO SET "timewritten=%%d %%e"
IF NOT DEFINED timecreated FOR /f "tokens=1,2 delims= " %%d IN ('dir /tc %%~k "%%a" 2^>nul ^|find "%%~nxa"') DO SET "timecreated=%%d %%e"
)
ECHO!timecreated!!timewritten! %%~za %%~nxa
)
)
GOTO:EOF
Вам нужно будет изменить настройку sourcedir
в соответствии с вашими обстоятельствами.
Интересная проблема. Этот код обрабатывает его
Во-первых, применяя стандартный список каталогов для имен файлов в дереве от относительного корня (%sourcedir%) до %%a
Используя полное имя файла в %%a
, наборе timewritten
и timecreated
из обычного dir
списка, предназначенного для рассматриваемого файла.
Оказалось, что %%~ta
извлечение метки времени для скрытых и системных файлов не очень хорошо, поэтому я решил построить их из обычного dir
списка с соответствующими t
настройками, в частности, листинг с /ad, /as и /ah и фильтрация для строки, которая соответствовало имени файла, которое, казалось, правильно извлекало данные.
Я оставил дату/время в необработанном формате. Извлечение различных элементов и построение отчета в нужном формате должно быть простой задачей.
Комментариев нет:
Отправить комментарий