![]() |
Батник сбора файлов из поддиректорий в общую папку
Уважаемые, прошу помощи по такому вопросу:
Имеем многоуровневую развитую структуру директорий "Главная-подчиненные". Например, GENERALFOLDER |_FOLDER-1 |_FOLDER-11 |_FOLDER-111 |_FOLDER-1111 |_FOLDER-1112 ... |_FOLDER-112 ... |_FOLDER-2 ... и т.д. Количество подчиненных директорий не фиксировано. Есть ли способ написать батник, который бы перемещал все файлы поддиректорий в их корневую папку? То есть, все файлы из любых поддиректорий папки FOLDER-1 перемещались бы в FOLDER-1, все файлы поддиректорий из FOLDER-2 перемещались бы в FOLDER-2, так же с FOLDER-3 и т.д. При этом, необходимо избежать переписывания файлов при совпадений их имен, а оригинальными именами файлов можно жертвовать, но не расширениями. |
можно, но из схемы не видна вложенность подкаталогов, к примеру, является ли FOLDER-11 подкаталогом FOLDER-1 ?.. Наконец, недостаточно полно описан алгоритм разрешения конфликтов имен, что значит "именами файлов можно жертвовать, но не расширениями"? переименовывать при совпадении?.. но тогда по какому правилу?.. или затирать?.. но тогда какой из двух файлов?
пример для одного исходного каталога, оставляющий конфликтующие файлы без изменений: Код:
@Echo Off |
amel27
Спасибо за ответ. Да, имелось ввиду, что FOLDER 111 - это подкаталог папки FOLDER-11, которая в свою очередь является подкаталогом папки FOLDER-1. А в отношении жертвоприношений имен файлов имелась ввиду допустимость изменять их как угодно в целях сохранения самого файла - переименовывать по любому правилу при совпадении (полное переименование, добавление символа, цифры, и т.д., но с сохранением расширения). Сегодня опробую Ваш код на живом материале, благодарю. |
Цитата:
Код:
@Echo Off |
amel27,
большое спасибо за помощь. Но оказалось, что CMD крайне долго обрабатывает мой объем файлов (порядка 10 тысяч), при этом делая много ошибок - пропускает некоторые папки, не добираясь до файлов. Вероятно, существуют какие-то количественные ограничения. К тому же, некоторые файлы просто не воспринимаются самой консолью из-за неудобоваримых имен. Поэтому я нашла способ формировать батник ПРЯМОГО поименного копирования с указанием пути от каждого файла в корневую папку. В работе сэкономила массу времени и избежала ошибок. НО!!! Не избежала потери информации, когда имена файлов из разных папок совпадают. Они просто замещают уже имеющийся. Прошу помочь снова. Можно ли каким-то образом, используя прямые пути копирования файлов из субдиректорий в директории вида copy /y /n "C:\FOLDER\SUBFOLDER\*.*" "C:\FOLDER\" сформировать дополнительное условие дополнения имен счетчиком, если в целевой директории лежит файл с тем же именем? |
Цитата:
Цитата:
Цитата:
Цитата:
Код:
For %%i In ("C:\FOLDER\SUBFOLDER\*.*") Do ( |
amel27,
Поняла, спасибо. На счет ограничений и тормозящего эффекта Echo для меня информация совершенно новая. Проверила через Excel - действительно, некоторые пути+файлы больше 255 знаков. Эффект от Echo не замеряла. Посмотрите, пожалуйста, личку - отправлю вопрос, на который прошу ответить так же в личку. |
Можете подправить этот батник так,
Цитата:
GENERALFOLDER |_FOLDER-1 |_FOLDER-11 |_FOLDER-111 |_FOLDER-1111 |_FOLDER-1112 чтоб все файлы из поддиректорий |_FOLDER-1112 |_FOLDER-1111 |_FOLDER-111 |_FOLDER-11 переместились в |_FOLDER-1 при этом если в |_FOLDER-1 нет поддиректорий, то ее не надо трогать т.е. перемещать файлы из нее в GENERALFOLDER. |
Arsenik77, Как-то так
Код:
@echo off |
Цитата:
Нужно чтобы в директориях оставались только определенные файлы. Код:
chcp 1251 |
Arsenik77,
Код:
@echo off |
Батник не правильно работает, нужно удалять все файлы, кроме "exclude=.txt .jpg .mp3" и затем оставшиеся файлы перемещать в свою первую директорию.
Сейчас он просто перемещает "не нужные" в свою первую директорию, а "нужные" оставляет на месте. |
Arsenik77,
Т.е. те, что исключение перемещать в корень, а остальные удалять? Код:
@echo off |
Все правильно, но надо чтобы в корнях тоже оставались только исключения.
|
Цитата:
Код:
@echo off |
В корне файлы переименовываются дописывается "(1)" при повторном запуске батника.
|
Цитата:
Код:
@echo off |
Помогите дописать последний батник так, чтобы если количество файлов (результирующее т.е. после отработки основного батника) в папке меньше 5 то файлы из нее перемещались в другую папку, например папку "различное".
|
Время: 17:21. |
Время: 17:21.
© OSzone.net 2001-