Лента Мой малыш
Городские форумы
Автофорумы
Халявный
Домоводство
Проф. и бизнес форумы
Строительные форумы
Технофорумы
Собачий форум
Велофорумы Нижнего Новгорода
Наши дети
Туризм, отдых, экстрим Творческий
Путешествия Спортивные форумы
Нижегородская область Недвижимость
Форумы по интересам
Частные форумы Форумы домов Жилые районы
Отзывы и предложения (техподдержка)
Реклама на NN.RU
+7 (831) 261-37-60
Техподдержка Полная версия

Копирование файлов по списку

28
7110
Есть каталог с множеством файлов, разложенных в разные подкаталоги. Структура не известна, как и количество файлов. Есть некий файл со списком нужных файлов. Требуется создать копию каталога, но только с "нужными" файлами, входящими в список. Как это можно сделать? Файл со списком создается программно, формат можно менять в очень широких пределах.
0
Ответить
В этом "некоем файле" только названия или названия с путями?
0
Ответить
Полностью относительный путь внутри каталога, например, вот такой: Alt luci\AMARCORD PA1505.jpg . При необходимости можно разделить, отдельно имена вложенных каталогов, отдельно имя самого файла.
0
Ответить
ОС Винда, я так предполагаю?
0
Ответить
Да! Если это имеет значение, то сейчас на большинстве компов, где будет происходить копирование, установлена XP, но постепенно идет переход на Vista.
0
Ответить
и процесс нужно полностью автоматизировать?

вручную можно сделать с помощью FAR-менеджера. У него есть "временная панель", которая понимает файлы списков. Только список должен содержать абсолютные пути, которые, в общем-то, несложно из исходного файла переделать.
После этого ENter по такому файлу приведет к открытию всего списка на одной панели и останется только нажать F5.
Хотя не совсем то получится. Если в условии "создать такой же каталог" подразумевает полную структуру поддиректорий, то проще будет сделать полную копию, потом инвертированный поиск и удалить всё найденное
0
Ответить
Список файлов большой?
Если не очень, то подойдет программа robocopy
команда будет выглядеть так:
robocopy c:\temp d:\temp file1 file2 file3 /s
c:\temp - исходный каталог
d:\temp - каталог назначения
0
Ответить
Не пойдет, в списке будет несколько тысяч файлов, вполне возможно, что 10...15 000.
0
Ответить
"Полностью автоматизировать", в данном случае означет избавиться от ручного поиска и копирования каждого файла. Некоторое количество ручных действий вполне допустимо, но оно не должно зависеть от количества файлов.
При копировании необходимо сохранить структуру, посколько есть не нулевая вероятность совпадения имен файлов в разных подкаталогах.
Вариант сделать полную копию, а потом лишнее удалить тоже вполне возможен, но и его хотелось бы избавить от множества ручных операций.
В список файлов можно писать абсолютные пути, это не вызывает каких-либо сложностей.
0
Ответить
у robocopy есть поддержка job-файлов, они текстовые по своей сути и легко могут генериться другими программами
0
Ответить
robocopy - freeware?
0
Ответить
Если предполагается делать бэкап, можно воспользоваться winrar-ом, он вроде бы умеет обрабатывать файло по списку, из текстового файла.
0
Ответить
Как вариант, батник вида
@echo off

set sourcedir=c:\откуда копируем
set destdir=c:\куда будем\копировать

for /F "eol=; tokens=1* delims=|" %%i in (файл-список.txt) do (
echo F | xcopy "%sourcedir%\%%i" "%destdir%\%%i" /y /q /f
)


Если формат файла со списком действительно можно менять в широких пределах, то наверное можно сразу генерить его с вышеобозначенной строкой с xcopy и запускать как батник.
0
Ответить
Не совсем бэкап, но вариант с архивом интересный...
Кстати, вопрос! Можно ли выложить по фтп на сервер архив и там его распаковать?
0
Ответить
Заданием можно.
0
Ответить
В файл можно дописать и какие-то команды, но как он в таком случае будет ссылаться сам на себя? Может быть, генерить файл со списком и батник со ссылкой на этот список?
Будет ли работать xcopy с файлами, содержащими пробелы в именах?
0
Ответить
Andy Tukker писал(а)
Может быть, генерить файл со списком и батник со ссылкой на этот список?
Я вот этого не совсем понял. Пример выше вроде вроде как раз так и работает - есть батник, есть файл со списком, есть исходный и конечный каталоги.
Если список тоже нужно копировать, дык, сам себя батник скопировать вполне в состоянии. ...кажется... :)
xcopy, как и прочие, адекватно воспринимает имена с пробелами, если их засунуть в кавычки. Собсно, выше так и сделано.

ЗЫ: Так маленько правильнее:
@echo off

set sourcedir=c:\откуда копируем
set destdir=c:\куда будем\копировать

for /F "tokens=1*" %%i in (файл-список.txt) do (
echo F | xcopy "%sourcedir%\%%i" "%destdir%\%%i" /y /q /f
)
0
Ответить
Был неправ, всё хорошо, огромное спасибо, ушел пробовать! :-)
0
Ответить
Да, входит в состав Windows NT Resource Kit
0
Ответить
что произойдет, если в списке встретится не существующий файл? Батник его пропустит и пойдет дальше или выдаст ошибку и остановится?
0
Ответить
Список файлов может выглядеть, например, вот так: ---->
0
Ответить
Сделал батник:

@echo off

set sourcedir=
set destdir=d:\5

for /F "tokens=1*" %%i in (pict.txt) do (
echo F | xcopy "%sourcedir%\%%i" "%destdir%\%%i" /y /q /f
)

положил его в тот же каталог, где лежит pict.txt, запустил. Он про каждый файл обругался, что нет такого файла :-/ Но написал, что "нет файла Alt", т.е. он не воспринимает пробелы в имени каталога. В каком месте поставить кавычки? Или это решается как-то иначе?
0
Ответить
Проверка на "program files\internet explorer" показывает что с пробелами вроде как усе в порядке. Но в таком виде получается, что xcopy запускается с параметрами
xcopy "\D:\Bases\хгнапюфемхъ\LOGO\Alt luce.jpg" "d:\5\D:\Bases\хгнапюфемхъ\LOGO\Alt luce.jpg"
Это вообще достаточно проблематично выполнить. :)
В оригинале, было про "относительный путь внутри каталога", в образце путь абсолютный. Собсно, никто не предусматривал :)

И в догонку... Намудрил я с более правильным вариантом. Первый for как-то лучше работал :-D

Собственно, вот эти батник со списком отработали как (наверное) задумано.
0
Ответить
Неправильные имена файлов отображаются только в браузере, всамом файле всё хорошо :-) Браузер по умолчанию предполагает кодировку КОИ8, а там win.
Пути сейчас верну относительные, что-то я действительно увлекся и смешал все советы из этой темы в один :-)
0
Ответить
Спасибо огромное, процесс пошел!
К сожалению, как выяснилось, русские имена файлов/каталог не воспринимаются, но это уже мелочи...
0
Ответить