![]() |
Копирование файла в папки по списку
Доброго дня. Есть такая задача.
файл 121615.xls нужно скопировать в папки, список которых хранится в файле list.txt . Папки находятся на одном логическом диске, но разбросаны по другим папкам. Есть ли вообще возможность такое хоть как-то автоматизировать? |
для запуска из командной строки:
Код:
for /f %i in (destinations.txt) do @copy "f:\ile\location\121615.xls" %i |
Цитата:
Я так понимаю, тут подразумевается, что в destinations.txt папки указаны с маршрутами. Но если я не знаю, где эта папка лежит, и нужно, чтобы система её сама нашла? В моем файле только имена папок указаны. |
Bobis, так не пойдет, папки, пожалуй, найти можно, но где гарантия что это именно те папки, в которые нужно файлы распихать? Допустим в списке указана папка system кроме того что папка с таким названием предположительно (но это не точно) существует в целевом пути она может располагаться и в Windows, а совать туда что попало есть весьма не комильфо. Нужны какие-то ограничивающие условия, например где именно такие папки нужно искать. И желательно не использовать маски ограничивающиеся буквой диска, ибо в таком случае, в зависимости от размера и заполненности диска, конечно, работа батника может затянуться как минимум надолго.
|
Elven,
Все искомые папки находятся по адресу C:\Prepare\ . И вот в этой папке нужно искать те, что будут в текстовом файле. По результату поиска в найденные папки скопировать в них файл. |
ну тогда приблизительно так (опять же прямо из командной строки):
Код:
pushd "C:\Prepare\" && (for /f %i in (destinations.txt) do (for /f %j in ('dir /B /S %i?') do @copy "f:\ile\location\121615.xls" %~fj)) && popd |
Elven,
Вот что у меня получилось. @echo off pushd "C:\Prepare\" && (for /f %%i in (C:\TEMP\destinations.txt) do (for /f %%j in ('dir /B /S %%i?') do @copy "C:\TEMP\121512_short.xlsx" %%~fj)) && popd При этом результат "Файл не найден." Хотя вроде маршруты все правильные. |
Elven, Поковырял еще, понял, что не копирует, потому что имена искомых папок кирилицей и длинные (полное ФИО). Может проблема с кодировкой? Или не полное сравнение проводит ?
|
если есть кириллица то батник должен быть в 866 кодировке. штатный виндовый блокнот ее не умеет (меня кстати всегда интересовало почему), поэтому лучше воспользоваться сторонним редактором, например npp
|
Elven, То есть его написать нужно именно в этой кодировке? Я пользовался Far Manager. Игрался кодировками батников - не помогло (((. Что я не так делаю?
|
Цитата:
А то и ставьте команду pause после каждой строки и анализируйте, где что пошло не так, как ожидалось. Я, например, не вижу ни единой двойной кавычки в тех местах, где переменные после их развёртывания могут содержать пробелы или имена на кириллице. |
Код:
@Echo Off Код:
In Кстати, при желании можно размножить несколько файлов по общей маске, например, Set "FileIn=Z:\Где размножаемый файл\*.xls" |
|
Вложений: 1
Bobis,
Изменённый батник
Код:
@Echo Off Прилагаю заархивированную папку Temp co всем хозяйством, включая батник. На всякий случай: не называйте свои исполнимые файлы именами команд в CMD: copy.bat, например. Возможны коллизии: что будет вызывать код - команду copy или файл copy.bat? |
megaloman,
Цитата:
Файл работает. Проверил на рабочих папках - из 2000 папок находит нужные из списка, раскладывает туда файл. Даже учитывая то ,что в названии папок присутствуют украинские символы. СПАСИБО большое всем, кто откликнулся. Тему можно считать закрытой. |
Цитата:
|
Помогите написать батник.
Есть файлы, к примру "Семенов.txt", "Иванов.txt" в которых хранятся имена файлов в столбец без расширения и путей. Они находятся в той же папке где есть те файлы что по списку. Задача, создать папку с именем файла ("Семенов", "Иванов"...) и скопировать туда файлы из списка этих текстовых файлов. Заранее спасибо! |
Sasha_vinni, Вы не указали кодировку текстовых файлов "Семенов.txt", "Иванов.txt" . Вы не уточнили, есть ли другие текстовые файлы, не содержащие списки. В предположении, что кодировка файлов 1251 и иные txt отсутствуют
Код:
@Echo Off &Cls Цитата:
|
Время: 21:54. |
Время: 21:54.
© OSzone.net 2001-