Давайте предположим, что только время последнего изменения файла из нового файла разыскивается от всех * .czi файлов каталог C:\Temp
, содержащий, например:
30.01.2017 08:13 First Listed.czi
28.01.2017 21:26 Oldest Image.czi
03.02.2017 17:13 Newest Image.czi
пакетный код для выполнения этой задачи может быть:
@echo off
set "Source=C:\Temp\"
set "Target=%Source%List.txt"
for /F "delims=" %%I in ('dir "%Source%*.czi" /A:-D /B /O:-D /T:W 2^>nul') do (
echo File "%%I" last modified on %%~tI>>"%Target%"
goto AfterLoop
)
:AfterLoop
Команда DIR выполняет поиск файлов * .czi в каталоге C:\Temp
и выводит список, отсортированный по времени последней модификации в обратном порядке от самого нового до самого старого.
В случае отсутствия * .czi файла может быть найден, команда DIR будет выдавать сообщение об ошибке для обработки STDERR. Это исходящее сообщение перенаправляется с 2>nul
на устройство NUL подавить его при этом оператор перенаправления >
должны быть экранированы здесь с ^
следует интерпретировать как перенаправление оператора на выполнение DIR командной строки и уже не на разборе для командной строки ,
%%I
ссылается на имя файла в качестве выхода на DIR и %%~tI
ссылки даты последнего изменения файла. Справка команды Для вывода вывода в окне командной строки for /?
объясняет эти модификаторы.
Цикл выходит после первого вывода текста, перенаправленного в целевой файл, на который добавляется строка, если она уже существует из-за использования >>
, а не только >
.
Для примера файлов список следующая строка добавляется к C:\Temp\List.txt
:
File "Newest Image.czi" last modified on 03.02.2017 17:13
Для понимания используемых команд и как они работают, откройте окно командной строки, выполните там следующие команды, и читать целиком все страницы помощи, отображаемые для каждой команды очень тщательно.
dir /?
echo /?
for /?
goto /?
set /?
Смотрите также статью Microsoft Using command redirection operators.
Определите, что вы подразумеваете под атрибутами, предпочтительно добавив эту информацию к своему вопросу. – Compo
также каковы «данные», которые вы хотите добавить в целевой файл? Содержимое файла * .czi или атрибут 'last modified'? –
Поскольку вы выполняете 'dir/o-d', ваша команда должна скопировать файл с первой модификацией в' target', скопировав каждый по очереди, начиная с ** последнего **. Вам нужно будет использовать '>>' вместо '>' для добавления данных. Файл «%% I» будет найденным именем файла, но копирование будет выполняться из каталога * current *, который не может быть «источником». Вы должны использовать ''% source %%% I "' для включения имени исходного каталога. Я бы предложил вам изменить свой вопрос, чтобы прояснить ситуацию. Вы просто хотите заменить «target» последним файлом или добавить к нему последний файл, или это первый файл? – Magoo