![]() |
Скопировать из множества папок по одному самому новому файлу с переименованием.
Здравствуйте.
Задача - собрать (скопировать по маске) из множества папок по одному последнему созданному в них файлу в целевую папку. И при копировании присвоить этим файлам имена исходных папок. Хотелось это сделать через присвоение множества папок одной переменной, поскольку папки могут быть в разных местах и на разную глубину: Код:
set "F01=D:\FOLDER1" Код:
FOR /D %%d IN (%FSET%) DO http://forum.oszone.net/thread-224061.html Но связать все это вместе не смог. Прошу помочь. Или подскажите альтернативное решение. |
@NuclearBox это можно связать вместе костыльным методом показанном ниже
но не рекомендую....займтитесь лучще изучением повершела может сначала надо определяться задачей, а уже потом выбирать костыли для ее решения пример Код:
@echo OFF Код:
a.cmd Код:
LIST=X Y Z |
Код:
@echo off Цитата:
|
Serguei Kouzmine, спасибо за ответ и совет. Код попробую применить, ценно по умолчанию. Советом пока не воспользуюсь, дефицит времени. Ищу именно cmd- или bat-решение.
alpap, спасибо большое, Ваши конструкции больше понимаю и учусь на них. Останется добавить отбор файлов по маске, думаю с этим справлюсь. Но по именам Вы правы - файлы затрутся не только при следующем копировании (в моем случае не страшно), но как понимаю и при текущем, если у их папок на диске одинаковое имя. Например, Код:
set "d1=C:\Program Files\Internet Explorer" |
Цитата:
Цитата:
Если Вы расскажете, что это за файлы, почему они находятся в разных каталогах, с какой именно целью Вы их собираете в одном месте — возможно, Вам подскажут и: Цитата:
|
Цитата:
Код:
@echo off Цитата:
маску ставить: ...dir /a-d/b/o-d/tc "сюда" ... и тогда стоит записать так с учетом вышенаписанного: ... 2>nul dir /a-d/b/o-d/tc "сюда" ... |
Iska, это файлы, которые периодически формируют программы и специалисты, и которые долго отслеживать, собирать и обрабатывать вручную. Общий каталог нужен для автоматического формирования итоговых файлов на их основе. Просто автоматизация ежедневной работы.
alpap, Роскошно! Это именно то, что нужно. Супер-Пупер код! Работает идеально. "Сюда" - тоже). Еще один полигон для изучения. Огромное спасибо! |
Цитата:
Цитата:
|
megaloman, здравствуйте.
Вероятность получить "древний" документ исключена. Устаревшие на заданную глубину дней документы в этих папках сначала переместятся в подпапки old ( http://forum.oszone.net/thread-349519.html ), следующему процессу они будут не видны. Общее количество собираемых файлов менее 30. Какие-то формируются строго ежедневно, какие-то без четкой периодичности, по мере готовности. Известны папки обновления, характер данных, форматы файлов. Для большинства известна структура наполнения. Имена файлов и количество - не подлежат систематизации из-за особенностей программ (как присваиваются имена) и личных предпочтений специалистов (когда и как обновляются - перезаписью или накапливанием, какие названия и т.д.). Совпадение файлов по смыслу и источнику исключено, "смыслы" не пересекаются. Это не новостной сборщик, хотя можно, наверное, с доработкой применять батник и для таких задач. Из собранных файлов постранично формируется несколько профильных файлов + общий документ, автоматизация с помощью конвертеров и Pdftk. |
Всегда с интересом рассматриваю оригинальное творчество alpap, ИМХО необходимо перед копированием очищать Out.
Немного другой вариант: я не нумерую все файлы, я нумерую файлы только с совпадающими именами, а не сплошняком. Нумерация файлов с одинаковыми именами и разными расширениями из одной папки одинаковая. Учитываю маски. Код:
@Echo Off |
megaloman, большое спасибо. Это как раз то решение, на которое я замахнулся и не осилил.
Не так лаконично, как предложил alpap, но для меня очень ценно, чтобы понимать, как использовать множества папок и масок через общую переменную. Параметр /s для обхода подпапок исключу, в моем случае он лишний. По нумерации - вариант, но для визуального контроля удобнее вариант alpap - зная код, можно быстро определить какой файл с повторяющимся именем из какой папки пришел, или не пришел. С советом предварительно очищать OUT соглашусь и учту. Очень благодарен. Еще раз спасибо всем за помощь. |
Цитата:
|
megaloman, Точно, спасибо.
|
Цитата:
Не надо знать код, надо задокументировать копирование в .Log-файле.
Код:
@Echo Off |
megaloman, Да, логично, не подумал об этом. Круто и даже избыточно.
|
А теперь задача со звёздочкой: если там а) и впрямь копирование, б) в пределах одного раздела, в) в скопированные файлы не вносится изменений — вместо копирования создаём жёсткие ссылки :).
|
Время: 13:37. |
Время: 13:37.
© OSzone.net 2001-