Den_Klimov
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Ребята. Помогите пожалуйста. Очень необходимо написать два bat-ника. -------------------- Условие: Существует два каталога - каталог "a" и каталог "b". В обоих каталогах (и в каталоге "a" и в каталоге "b") может как быть масса файлов и каталогов с подкаталогами и файлами, так и не быть вообще ничего (пустой каталог без файлов с пустыми подкаталогами или без них)! Существует также - гарантированно пустой каталог "c". Где распологается каждый из трёх данных каталогов не суть важно, известно только, что путь к любому из каталогов может включать в себя и пробелы и переменные вроде %USERPROFILE%, %SystemRoot% и других. Пути к каталогам и файлам в bat-нике желательно задать в виде переменных %1 %2 %3. Даже если какую-либо из команд невозможно выполнить по каким-либо причинам (например невозможно удалить файл, который в данный момент используется другой программой), всё равно искомый батник должен нормально отработать до конца. Среда выполения искомого bat-cmd-файла - WindowsXP, но всё же желательно, чтобы bat-ник был универсальным (работал и в Win2000 и в Win2003). И крайне желательно описание (в виде rem), что делает каждая командная строка. Кстати работать все батники будут через известную hidcon.exe, которая полностью скрывает консоль во время выполнения пакетного файла. Впрочем, работа bat-ника через hidcon.exe вроде бы ни на что не влияет. Подобные пакеты командных строк можно было бы использовать в очень многих различных сложных bat-никах для весьма разнообразных задач. В том числе для создания простых инсталляционных пакетов на основе обычных самораспаковывающихся архивов. Естественно с использованием утилиты полного 100% скрытия работы cmd-файла - hidcon.exe (кстати, если кому нужен hidcon.exe могу выложить). -------------------- Задача первого пакетного файла - действия и с файлами и с папками в каталогах "a" и "b". 1. @Найти@ в [корне каталога "a"] =все файлы и папки которые там расположены (конечно, если там вообще расположены какие-либо файлы и папки)= и @вывести эти файлы и папки в файл-список (к примеру list-a.txt)@. 2. @Скопировать@ из [корня каталога "b"] в [гарантированно пустой каталог "c"] те =файлы и папки (если какие-либо файлы и папки там вообще имеются), которые совпадают с перечисленными в "файл-списке" (конечно если в файл-списке вообще перечислены какие-либо файлы и папки)=. 3. @Снять все атрибуты@ в [корне каталога "b"] с тех =файлов и папок (если какие-либо файлы и папки там вообще имеются), которые совпадают с перечисленными в "файл-списке" (конечно если в файл-списке вообще перечислены какие-либо файлы и папки)=. 4. @Удалить@ в [корне каталога "b"] те =файлы и папки (если какие-либо файлы и папки там вообще имеются), которые совпадают с перечисленными в "файл-списке" (конечно если в файл-списке вообще перечислены какие-либо файлы и папки)=. 5. @Скопировать@ из [корня каталога "a"] в [каталог "b"] все =имеющиеся в каталоге "a" файлы и папки=. (что-то вроде xcopy %1\* %2 /c /v /s /e /k /h /y) -------------------- Задача второго пакетного файла - действия с файлами с сохранением структуры подкаталогов в каталогах "a" и "b". 1. @Найти@ в [каталоге "a" и его подкаталогах] все =файлы которые там расположены (конечно, если там вообще расположены какие-либо файлы)= и @вывести эти файлы с сохранением структуры папок в файл-список (к примеру list-a.txt)@. 2. @Скопировать, с сохранением структуры каталогов@, из [каталога "b" и его подкаталогов] в [гарантированно пустой каталог "c"] те =файлы (если какие-либо файлы там вообще имеются) которые совпадают с перечисленными в "файл-списке", причём не только по названию но и расположены в таких же подкаталогах (конечно если в файл-списке вообще перечислены какие-либо файлы)=. 3. @Снять все атрибуты@ в [каталоге "b" и его подкаталогах] с тех =файлов (если какие-либо файлы там вообще имеются), которые совпадают с перечисленными в "файл-списке", причём не только по названию но и расположены в таких же подкаталогах (конечно если в файл-списке вообще перечислены какие-либо файлы)=. 4. @Удалить@ в [каталоге "b" и его подкаталогах] те =файлы (если какие-либо файлы там вообще имеются), которые совпадают с перечисленными в "файл-списке", причём не только по названию но и расположены в таких же подкаталогах (конечно если в файл-списке вообще перечислены какие-либо файлы)=. 5. @Скопировать, с сохранением структуры каталогов@, из [каталога "a" и его подкаталогов] в [каталог "b" и его подкаталоги] все =имеющиеся в каталоге "a" файлы=. -------------------- Кстати отличие второго искомого батника от первого именно в том и заключается. 1. Что в файл-список в первом случае выводится содержимое только лишь КОРНЯ каталога "а" (независимо будут то файлы или папки). И таким образом дальнейшие действия с возможно существующими объектами в каталоге "b" производятся только к тем ФАЙЛАМ и ПАПКАМ, которые распологаясь в КОРНЕ каталога "b" полностью совпадают по имени.расширению, с аналогичными файлами и папками в корне каталоге "а". 2. А во втором выводится ПОЛНАЯ СТРУКТУРА файлов, включая файлы находящиеся в подкаталогах (с сохранением структуры их расположения в подкаталогах каталога "а"). И таким образом дальнейшие действия с возможно существующими объектами в каталоге "b" производятся только к тем ФАЙЛАМ, которые полностью совпадают и по имени.расширению и по своему относительному расположению в структуре подкаталогов в каталоге "b" с аналогичными файлами в каталоге "а". PS. Как видите хотя задачи искомых первого и второго bat-файлов похожи, но всё-таки имеют определённые серьёзные отличия. К сожалению моих знаний явно не хватает чтобы самостоятельно написать такие bat-файлы. Потому очень надеюсь на вашу помощь. Помогите пожалуйста. Я в свою очередь в долгу не останусь. Даю слово! | Всего записей: 317 | Зарегистр. 27-02-2006 | Отправлено: 21:01 30-09-2006 | Исправлено: Den_Klimov, 19:47 01-10-2006 |
|