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

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

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

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


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

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


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

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

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

 
mwz mwz вне форума

Аватара для mwz

Ветеран


Contributor


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

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


Цитата Bobis:
Вот что у меня получилось.
@echo off »
На время отладки уберите эту строку и смотрите, где появляются проблемы. Запускать батник из окна CMD. Строка нужна лишь для окончательно отлаженных скриптов — а в процессе отладки противопоказана, поскольку заставляет тыкаться как слепому котёнку вместо того, чтобы или прочитать причину ошибки в явном виде, или увидеть её зрительно (типа отсутствия кавычек при развёртывании переменных, содержащих пробелы).

А то и ставьте команду
pause
после каждой строки и анализируйте, где что пошло не так, как ожидалось.

Я, например, не вижу ни единой двойной кавычки в тех местах, где переменные после их развёртывания могут содержать пробелы или имена на кириллице.

-------
Mikhail Zhilin


Последний раз редактировалось mwz, 16-07-2019 в 16:16.

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:06, 16-07-2019 | #11



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

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


Ветеран


Contributor


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

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


Код: Выделить весь код
@Echo Off
cls
>nul Chcp 1251
	Set "FileIn=Z:\Где размножаемый файл\121615.xls"
	Set "BoxOut=Z:\Папка с искомыми подпапками"
	Set "Reestr=Z:\Папка с реестром\list.txt"

	FOR /F "usebackq delims=" %%f IN (`2^>nul More "%Reestr%"`) DO Set "@@%%f=Copy "%FileIn%""

	FOR /F "usebackq delims=" %%d IN (`2^>nul Dir /B /A:D /S "%BoxOut%\"`) DO (
		 Call %%@@%%~nxd%% "%%d\" >nul 2>&1  &&Call Echo %%@@%%~nxd%% "%%d\"
	)
Pause
Exit /B
файл list.txt
Код: Выделить весь код
In
Out
Офигенная фигня
Специально назвал папки кириллицей. Батник и list.txt сохранить в 1251 кодировке (например, стандартный notepad.exe)
Кстати, при желании можно размножить несколько файлов по общей маске, например,
Set "FileIn=Z:\Где размножаемый файл\*.xls"

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 17-07-2019 в 07:16.


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


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


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

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


megaloman,

Все по инструкции написал. FAR на пару секунд зависает на черном экране, потом результат нулевой. СКРИН

На всякий случай СКРИН_2 папок и list.txt и сам КОД

Последний раз редактировалось Bobis, 17-07-2019 в 02:41.


Отправлено: 02:12, 17-07-2019 | #13


Ветеран


Contributor


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

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


Вложения
Тип файла: zip Temp.zip
(1.6 Kb, 3 просмотров)

Bobis,
Изменённый батник
Код: Выделить весь код
@Echo Off
cls
>nul Chcp 1251
	Set "FileIn=D:\Temp\1.txt"
	Set "BoxOut=D:\Temp\tmp"
	Set "Reestr=D:\Temp\list.txt"

	If Not Exist "%FileIn%" (Echo "%FileIn%" Not Exist &Pause &Exit /B 2)
	If Not Exist "%BoxOut%\" (Echo "%BoxOut%" Not Exist &Pause &Exit /B 2)
	If Not Exist "%Reestr%" (Echo "%Reestr%" Not Exist &Pause &Exit /B 2)

>"%~dpnx0.txt" More "%~dpnx0"
>>"%~dpnx0.txt" More "%Reestr%"
>>"%~dpnx0.txt" Dir "%BoxOut%\" /S /B /A:D

	FOR /F "usebackq delims=" %%f IN (`2^>nul More "%Reestr%"`) DO Set "@@%%f=Copy "%FileIn%""

	FOR /F "usebackq delims=" %%d IN (`2^>nul Dir /B /A:D /S "%BoxOut%\"`) DO (
		 Call %%@@%%~nxd%% "%%d\" >nul 2>&1  &&Call Echo %%@@%%~nxd%% "%%d\"
	)
Pause
Exit /B
Выделенные строки отладочные, они делают текстовый файл рядом с батником, если батник не отработает, приложите его к сообщению. В дальнейшем эти строки можно удалить
Прилагаю заархивированную папку Temp co всем хозяйством, включая батник.
На всякий случай: не называйте свои исполнимые файлы именами команд в CMD: copy.bat, например. Возможны коллизии: что будет вызывать код - команду copy или файл copy.bat?
Батник в предыдущем посте исправил тоже

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 17-07-2019 в 07:24.

Это сообщение посчитали полезным следующие участники:

Отправлено: 07:09, 17-07-2019 | #14


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


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

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


megaloman,
Цитата megaloman:
На всякий случай: не называйте свои исполнимые файлы именами команд в CMD: copy.bat, например. Возможны коллизии: что будет вызывать код - команду copy или файл copy.bat? »
Спасибо, я как-то не подумал от этом.

Файл работает. Проверил на рабочих папках - из 2000 папок находит нужные из списка, раскладывает туда файл. Даже учитывая то ,что в названии папок присутствуют украинские символы.

СПАСИБО большое всем, кто откликнулся. Тему можно считать закрытой.

Отправлено: 09:48, 17-07-2019 | #15


Ветеран


Contributor


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

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


Цитата Bobis:
Спасибо, я как-то не подумал от этом. »
Почти каждый из нас проходит через это .

Отправлено: 17:24, 17-07-2019 | #16



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

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

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




 
Переход