Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Копирование файла в папки по списку

Ответить
Настройки темы
CMD/BAT - [решено] Копирование файла в папки по списку

Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


Доброго дня. Есть такая задача.

файл 121615.xls нужно скопировать в папки, список которых хранится в файле list.txt . Папки находятся на одном логическом диске, но разбросаны по другим папкам. Есть ли вообще возможность такое хоть как-то автоматизировать?

Отправлено: 12:05, 16-07-2019

 

Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


для запуска из командной строки:
Код: Выделить весь код
for /f %i in (destinations.txt) do @copy "f:\ile\location\121615.xls" %i
для батника %i заменить на %%i
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:18, 16-07-2019 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Elven:
для запуска из командной строки:
Код:
for /f %i in (destinations.txt) do @copy "f:\ile\location\121615.xls" %i
для батника %i заменить на %%i »

Я так понимаю, тут подразумевается, что в destinations.txt папки указаны с маршрутами. Но если я не знаю, где эта папка лежит, и нужно, чтобы система её сама нашла? В моем файле только имена папок указаны.

Отправлено: 12:30, 16-07-2019 | #3


Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


Bobis, так не пойдет, папки, пожалуй, найти можно, но где гарантия что это именно те папки, в которые нужно файлы распихать? Допустим в списке указана папка system кроме того что папка с таким названием предположительно (но это не точно) существует в целевом пути она может располагаться и в Windows, а совать туда что попало есть весьма не комильфо. Нужны какие-то ограничивающие условия, например где именно такие папки нужно искать. И желательно не использовать маски ограничивающиеся буквой диска, ибо в таком случае, в зависимости от размера и заполненности диска, конечно, работа батника может затянуться как минимум надолго.

Отправлено: 12:40, 16-07-2019 | #4


Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


Elven,

Все искомые папки находятся по адресу C:\Prepare\ . И вот в этой папке нужно искать те, что будут в текстовом файле. По результату поиска в найденные папки скопировать в них файл.

Отправлено: 12:53, 16-07-2019 | #5


Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


ну тогда приблизительно так (опять же прямо из командной строки):
Код: Выделить весь код
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
для батника % заменить на %%
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:10, 16-07-2019 | #6


Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

При этом результат "Файл не найден."

Хотя вроде маршруты все правильные.

Отправлено: 13:46, 16-07-2019 | #7


Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


Elven, Поковырял еще, понял, что не копирует, потому что имена искомых папок кирилицей и длинные (полное ФИО). Может проблема с кодировкой? Или не полное сравнение проводит ?

Отправлено: 15:20, 16-07-2019 | #8


Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


если есть кириллица то батник должен быть в 866 кодировке. штатный виндовый блокнот ее не умеет (меня кстати всегда интересовало почему), поэтому лучше воспользоваться сторонним редактором, например npp

Отправлено: 15:28, 16-07-2019 | #9


Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


Elven, То есть его написать нужно именно в этой кодировке? Я пользовался Far Manager. Игрался кодировками батников - не помогло (((. Что я не так делаю?

Отправлено: 15:41, 16-07-2019 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Копирование файла в папки по списку

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Копирование файлов по списку из файла foma24 Скриптовые языки администрирования Windows 2 30-12-2022 15:35
CMD/BAT - Копирование файлов в папки по маске файла и маске папки (BAT) skyskiff Скриптовые языки администрирования Windows 7 20-09-2015 22:41
CMD/BAT - [решено] Копирование файлов по списку foma24 Скриптовые языки администрирования Windows 5 22-01-2014 16:45
CMD/BAT - поиск и копирование файлов по списку-маске martyn_80 Скриптовые языки администрирования Windows 1 24-11-2012 14:47
CMD/BAT - [решено] Скачивание с FTP по списку из текстового файла Angel_Ok Скриптовые языки администрирования Windows 3 23-08-2011 22:32




 
Переход