|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Копирование файлов |
|
CMD/BAT - Копирование файлов
|
Новый участник Сообщения: 3 |
Приветствую всех, подскажите пожалуйста по такому вопросу - имеется файл -
list.txt в котором указаны названия файлов с их путями, пример: list.txt c:\117888\asd.txt c:\987898\zxdfg.txt c:\354687\asd.txt c:\567765\rty.txt c:\785565\asd.txt как мне все эти файлы скопировать в нужную папку например: d:\backup\ при условии что если копируемый файл уже имеется в папке назначения, то он не перезаписывался, а копировался с новым именем, например добавляя суффикс номера файла, например asd.txt asd(1).txt asd(2).txt из примера list.txt выше. Прошу помощи в этом, буду вам очень благодарен. |
|
Отправлено: 09:40, 18-06-2020 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать @Echo Off Set "TxtFile=Z:\Box_In\list.txt" Set "BoxOut=D:\Backup" Set /A MaxLen=3 2>nul Md "%BoxOut%" FOR /F "usebackq delims=" %%f IN ("%TxtFile%") DO Call :AddFile "%BoxOut%" "%%f" %MaxLen% Exit /B :AddFile If Not Exist %2 Exit /B 1 If Not Exist "%~1\%~nx2" >nul Copy %2 "%~1\" Set /A N=10000000 :Begin Set /A N+=1 Call Set "OutName=%~1\%~n2(%%N:~-%3%%)%~x2" If Exist "%OutName%" GoTo :Begin >nul Copy %2 "%OutName%" Exit /B |
------- Последний раз редактировалось megaloman, 18-06-2020 в 12:53. Отправлено: 12:26, 18-06-2020 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать @echo off set "d_out=d:\backup" set "f=C:\list.txt" <"%f%" (for /f "delims=" %%a in ('more') do call :#cp "%d_out%" "%%a") exit :#cp setlocal pushd "%~1" if not exist "%~n2%n%%~x2" (>nul copy "%~2" "%~n2%n%%~x2") else (set /a n+=1& goto #cp) popd endlocal exit /b |
Отправлено: 12:33, 18-06-2020 | #3 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Всем большое спасибо !
Но периодически батник во всех предложенных вариантах выдает такое https://prnt.sc/t2ba1x |
Последний раз редактировалось cutter47, 18-06-2020 в 23:50. Отправлено: 22:26, 18-06-2020 | #4 |
Старожил Сообщения: 193
|
Профиль | Отправить PM | Цитировать |
|
Отправлено: 12:59, 19-06-2020 | #5 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Цитата cutter47:
а код megaloman запускали? Или переходите на PS как выше предложил Fors1k, там точно нет таких проблем. |
|
Отправлено: 14:02, 19-06-2020 | #6 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать cutter47, а какое количество одинаковых по имени файлов возможно? У меня сейчас было MaxLen=3, то есть максимум 999+1 файл
(формат имени "имя(ххх).расширение"). (ххх) - такой формат нужен для удобной сортировке файлов по имени в проводнике или файл-менеджере. Можно этот параметр увеличить, при необходимости. Я протестировал батник с List.txt с >1600 строк - отработал без замечаний, хотя и долго. А какие реально имена файлов? Если в них нет пробелов, то реально существенно ускорить его работу. |
------- Последний раз редактировалось megaloman, 19-06-2020 в 18:29. Отправлено: 14:42, 19-06-2020 | #7 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Здравствуйте всем, спасибо большое за помощь, длина пути может содержать более 300 символов, в пути встречаются папки с китайскими иероглифами.
List.txt будет содержать чуть менее 3 миллионов строк (в принципе можно разбить на части). Повторов копируемых файлов может быть до 100 тысяч (все разные, поэтому перезапись не приемлема) С такими путями через проводник не работаю, работаю через тотал коммандер. Пример строк из файла List.txt прикрепляю. http://forum.oszone.net/attachment.p...1&d=1592739394 |
Последний раз редактировалось cutter47, 21-06-2020 в 14:44. Причина: исправил Отправлено: 14:38, 21-06-2020 | #8 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Проверка существования файлов в папке и копирование файлов в другую | Funbeee | Скриптовые языки администрирования Windows | 2 | 07-09-2016 12:51 | |
Любой язык - Копирование файлов. | Jeerjmin | Скриптовые языки администрирования Windows | 6 | 08-07-2016 20:08 | |
Любой язык - Копирование файлов | Sisin | Скриптовые языки администрирования Windows | 4 | 23-03-2015 16:58 | |
Любой язык - Копирование файлов | lukas_endigo_91@vk | Скриптовые языки администрирования Windows | 0 | 06-01-2015 14:27 | |
CMD/BAT - Копирование файлов | corwax | Скриптовые языки администрирования Windows | 7 | 03-03-2014 10:06 |
|