|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Перемещение файлов по папкам по имени |
|
|
CMD/BAT - [решено] Перемещение файлов по папкам по имени
|
Новый участник Сообщения: 9 |
Здравствуйте. Я только начал изучение данного вопроса а проблема требует немедленного решения. В связи с эти большая просьба помочь.
Необходимо переместить файлы в папки. Файлы находятся в одной папке и имеют наименования состоящие из номера и даты, например ПГ 92 07-59480-17 от 02.11.2017.docx Папки так же уже созданы и имеют наименование из номера и даты, например 07-59480-17 от 02.11.2017 То есть начало имени файла и папки могут отличаться ну и расширение файла в имени папки не присутствует. Перемещать нужно при полном совпадении номера (**-******-**) и даты ДД.ММ.ГГГГ Заранее спасибо. |
|
Отправлено: 10:47, 08-06-2018 |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать я так понял файлы в одной папке, а папки с именами "из номера и даты" - в другой, тогда как-то так
Разумеется, если имя папки действительно соответствует именам папок таким образом как описано в первом посте. |
Отправлено: 11:28, 08-06-2018 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 9
|
Профиль | Отправить PM | Цитировать Спасибо за помощь. Начало имени файла может отличаться, но может и не отличаться, номер и дата всегда совпадают.
Имя папки более предсказуемо выглядит. Только номер и дата. Выдает ошибку: Не удается найти указанный файл Перемещено файлов: 0 |
Последний раз редактировалось Мурат09, 08-06-2018 в 11:42. Причина: Дополнение. Отправлено: 11:39, 08-06-2018 | #3 |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать если в именах папок/файлов содержатся кирилические символы - сохранить батник в 866 кодировке (например через NPP). Ну и о пробелы традиционно споткнуться можно, настолько их автоматически избегаю, что забываю о том, что они таки имеют место быть, если в именах есть пробелы тогда так:
|
Отправлено: 12:02, 08-06-2018 | #4 |
Новый участник Сообщения: 9
|
Профиль | Отправить PM | Цитировать Огромное спасибо Elven! Слов нет! Дело которое человек делал бы до самой старости, благодаря Вашим знаниям, делается одним (двойным) нажатием на клавишу мыши. Еще раз спасибо!
|
|
Отправлено: 13:26, 08-06-2018 | #5 |
Новый участник Сообщения: 9
|
Профиль | Отправить PM | Цитировать Оказалось что помимо файлов с датой (ПГ 92 07-59480-17 от 02.11.2017.docx) есть файлы без даты в названии (КФК 07-59480-17.jpg). Данный скрипт их не перемещает так как ищет совпадение с названием папки. Как выбрать первые 11 символов в названии папки ума не приложу...
Большая просьба помочь. |
Отправлено: 09:27, 13-06-2018 | #6 |
Новый участник Сообщения: 9
|
Профиль | Отправить PM | Цитировать ![]() ![]() |
Отправлено: 16:32, 14-06-2018 | #7 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Цитата Мурат09:
@Echo Off Set "BoxFile=Z:\Box_In" Set "Folders=Z:\Box_Out\??-?????-?? от ??.??.????" FOR /F "usebackq delims=" %%d IN (`2^>nul Dir "%Folders%" /A:D /B /O:-D /T:W`) DO Set "Ndir=%%d" &Call :Separ "%Folders%" "%%d" FOR /F "usebackq delims=" %%d IN (`2^>nul Dir "%Folders%" /A:D /B /O:-D /T:W`) DO Set "Ndir=%%d" &Call :Separ "%Folders%" "%%d" %%Ndir:~0,-14%% GoTo :Eof :Separ If "%~3"=="" ( If Exist "%BoxFile%\*%~2.*" >nul 2>&1 Move /Y "%BoxFile%\*%~2.*" "%~dp1%~2\" ) Else ( If Exist "%BoxFile%\*%~3.*" >nul 2>&1 Move /Y "%BoxFile%\*%~3.*" "%~dp1%~2\" ) GoTo :Eof ИМХО, задача требует уточнение
Если номер в имени файла/папки уникален, то есть, он в файле/папке за другой день фигурировать не может, то скрипт упрощается. Логика задачи требует именно этого, раз есть файлы с номером и без даты.
@Echo Off Set "BoxFile=Z:\Box_In" Set "Folders=Z:\Box_Out\??-?????-?? от ??.??.????" FOR /F "usebackq delims=" %%d IN (`2^>nul Dir "%Folders%" /A:D /B /O:-D /T:W`) DO Set "Ndir=%%d" &Call :Separ "%Folders%" "%%d" %%Ndir:~0,-14%% GoTo :Eof :Separ If Exist "%BoxFile%\*%~3*.*" >nul 2>&1 Move /Y "%BoxFile%\*%~3*.*" "%~dp1%~2\" GoTo :Eof |
|
------- Последний раз редактировалось megaloman, 14-06-2018 в 21:22. Отправлено: 20:12, 14-06-2018 | #8 |
Новый участник Сообщения: 9
|
Профиль | Отправить PM | Цитировать Ошибку выдает:
Скрытый текст
d:\>5.bat d:\>я╗┐@echo off "я╗┐@echo" не является внутренней или внешней командой, исполняемой программой или пакетным файлом. d:\>Set "BoxFile=D:\files" d:\>Set "Folders=D:\folders\??-?????-?? ╨╛╤В ??.??.????" d:\>FOR /F "usebackq delims=" %d IN (`2>nul Dir "D:\folders\??-?????-?? ╨╛╤В ??. ??.????" /A:D /B /O:-D /T:W`) DO Set "Ndir=%d" & Call :Separ "D:\folders\??-?? ???-?? ╨╛╤В ??.??.????" "%d" d:\>FOR /F "usebackq delims=" %d IN (`2>nul Dir "D:\folders\??-?????-?? ╨╛╤В ??. ??.????" /A:D /B /O:-D /T:W`) DO Set "Ndir=%d" & Call :Separ "D:\folders\??-?? ???-?? ╨╛╤В ??.??.????" "%d" %Ndir:~0,-14% d:\>GoTo :Eof |
Отправлено: 15:12, 18-06-2018 | #9 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 15:19, 18-06-2018 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Перемещение файлов из списков по разным папкам | blither | Скриптовые языки администрирования Windows | 3 | 12-04-2016 13:43 | |
CMD/BAT - [решено] Перемещение заданного количества файлов, начиная с первого по имени | Alexander_88 | Скриптовые языки администрирования Windows | 2 | 27-08-2014 09:54 | |
CMD/BAT - [решено] перемещение файлов , последних по имени | Alexander_88 | Скриптовые языки администрирования Windows | 5 | 21-08-2014 13:39 | |
CMD/BAT - [решено] Перемещение заданного количества файлов, начиная с последнего по имени | Alexander_88 | Скриптовые языки администрирования Windows | 6 | 21-08-2014 11:36 | |
CMD/BAT - Раскидывание по папкам (по имени) | nameless86 | Скриптовые языки администрирования Windows | 6 | 10-06-2014 12:19 |
|