Я предполагаю, что самый последний файл может иметь произвольное число дней?Это правда?
Если все ваши каталоги имеют только 1 слой в одной корневой папке, то:
@(
SetLocal EnableDelayedExpansion
Echo Off
)
SET "_Root=C:\Some\Folder\Path"
SET "_NewRoot=C:\Some\New\Folder"
For /D %%A In ("_Root") Do (
MD "%_NewRoot%\%%A"
Copy "%_Root%\%%A\index.xml" "%_NewRoot%\%%A\index.xml"
For /F "Tokens=*" %%a IN ('DIR /A-D /B /OD "_Root\%%A\" ^| FindStr /I /V /C:"index\.xml$"') Do (
SET "_File=%%a"
)
Copy "%_Root%\%%A\!_File!" "%_NewRoot%\%%A\!_File!"
)
Итак, по сути, нам нужно зациклить структуру каталогов и установитьзначение переменной _File для найденных файлов и, если мы упорядочим их по дате в порядке возрастания, последним найденным значением будет самая новая папка, поэтому, когда мы выходим из этого цикла, переменная заполняется требуемым значением.
, так как индекс всегда нужен, я сразу создаю папки и копирую индекс и создаю вторую копию файла только после того, как найдено совпадение, мы игнорируем «Index.xml», так как он уже скопирован и не является соответствующим новымв любом случае файл для совпадения