|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Копирование файла в папки по списку |
|
CMD/BAT - [решено] Копирование файла в папки по списку
|
Новый участник Сообщения: 8 |
Доброго дня. Есть такая задача.
файл 121615.xls нужно скопировать в папки, список которых хранится в файле list.txt . Папки находятся на одном логическом диске, но разбросаны по другим папкам. Есть ли вообще возможность такое хоть как-то автоматизировать? |
|
Отправлено: 12:05, 16-07-2019 |
Ушел из жизни Сообщения: 8595
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Bobis:
А то и ставьте команду pause после каждой строки и анализируйте, где что пошло не так, как ожидалось. Я, например, не вижу ни единой двойной кавычки в тех местах, где переменные после их развёртывания могут содержать пробелы или имена на кириллице. |
|
------- Последний раз редактировалось mwz, 16-07-2019 в 16:16. Отправлено: 16:06, 16-07-2019 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2728
|
Профиль | Отправить 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 Кстати, при желании можно размножить несколько файлов по общей маске, например, Set "FileIn=Z:\Где размножаемый файл\*.xls" |
------- Последний раз редактировалось megaloman, 17-07-2019 в 07:16. Отправлено: 17:46, 16-07-2019 | #12 |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать |
Последний раз редактировалось Bobis, 17-07-2019 в 02:41. Отправлено: 02:12, 17-07-2019 | #13 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать 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
|
Профиль | Отправить PM | Цитировать megaloman,
Цитата megaloman:
Файл работает. Проверил на рабочих папках - из 2000 папок находит нужные из списка, раскладывает туда файл. Даже учитывая то ,что в названии папок присутствуют украинские символы. СПАСИБО большое всем, кто откликнулся. Тему можно считать закрытой. |
|
Отправлено: 09:48, 17-07-2019 | #15 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Bobis:
![]() |
|
Отправлено: 17:24, 17-07-2019 | #16 |
Новый участник Сообщения: 9
|
Профиль | Отправить PM | Цитировать Помогите написать батник.
Есть файлы, к примру "Семенов.txt", "Иванов.txt" в которых хранятся имена файлов в столбец без расширения и путей. Они находятся в той же папке где есть те файлы что по списку. Задача, создать папку с именем файла ("Семенов", "Иванов"...) и скопировать туда файлы из списка этих текстовых файлов. Заранее спасибо! |
Отправлено: 16:14, 30-01-2025 | #17 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Sasha_vinni, Вы не указали кодировку текстовых файлов "Семенов.txt", "Иванов.txt" . Вы не уточнили, есть ли другие текстовые файлы, не содержащие списки. В предположении, что кодировка файлов 1251 и иные txt отсутствуют
@Echo Off &Cls >nul Chcp 1251 rem Set "BoxIn=Z:\Box_In" Set "BoxIn=%~dp0" Pushd "%BoxIn%"||(Echo Folder "%BoxIn%" not found &Pause &Exit /B 2) FOR %%f IN ("*.txt") DO ( 2>nul Md "%%~nf" For /f "usebackq delims=" %%n IN (`2^>nul type "%%f"`) Do >nul Copy "%%n.*" "%%~nf\" rem For /f "usebackq delims=" %%n IN (`2^>nul type "%%f"`) Do >nul Move "%%n.*" "%%~nf\" ) Pause Exit /B Цитата Sasha_vinni:
|
|
------- Отправлено: 21:04, 30-01-2025 | #18 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|