|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Перемещение и переименование файлов |
|
CMD/BAT - [решено] Перемещение и переименование файлов
|
Пользователь Сообщения: 94 |
Доброго дня всем!
Подсобите пожалуйста BAT'ником. Есть папка с файлами "NaklScan": "2018-01-18_(1).tif", "2018-01-18_(2).tif", "2018-01-18_(3).tif", "2018-01-18_(4).tif", "2018-01-18_(5).tif", "2018-01-18_(6).tif", ... ... ... ... ... ... ... "2018-01-18_(7000).tif", ... ... ... ... ... ... ... которая после 3000 файлов начинает долго открываться (т.к. строится список). Нужно чтобы из этой папки (NaklScan) файлы перемещались в другую папку (NaklScan5) - предположим по 100 шт. Но загвоздка в том, что после перемещения файлов: "2018-01-18_(1).tif", "2018-01-18_(2).tif", "2018-01-18_(3).tif", "2018-01-18_(4).tif", "2018-01-18_(5).tif", "2018-01-18_(6).tif", ... ... ... ... ... ... ... "2018-01-18_(7000).tif", ... ... ... ... ... ... ... в папку "NaklScan5", в папке "NaklScan" будут снова создаваться файлы с такими же именами. Т.е. нужно чтобы при перемещении в папку "NaklScan5" порядковый номер продолжался: "2018-01-18_(7001).tif", "2018-01-18_(7002).tif", "2018-01-18_(7003).tif", "2018-01-18_(7004).tif", "2018-01-18_(7005).tif", "2018-01-18_(7006).tif". |
|
Отправлено: 11:25, 11-01-2018 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать DJ Mogarych, it3,
Цитата DJ Mogarych:
Вот вариант со временем.
@Echo Off cls Set "BoxIn=Z:\Box_In\NaklScan" Set "BoxOut=Z:\Box_In\NaklScan5" Set "Mask=20??-??-??_(*).tif" If Not Exist "%BoxOut%" Md "%BoxOut%" FOR /F "usebackq tokens=1,2* delims=()" %%i IN (`2^>nul Dir "%BoxIn%\%Mask%" /A:-D /B /O:D /T:C`) DO Call :Transfer "%%i" "%%k" "%BoxIn%\%%i(%%j)%%k" Pause GoTo :Eof :Transfer Set "Ftime=%~t3" Set "Ftime=%Ftime:~-5%" Set "Ftime=%Ftime::=%" Set "Ftime=%Ftime: =0%" Set /A ND=1 Set "NewFile=%BoxOut%\%~1%Ftime%%~2" :Begin If Not Exist "%NewFile%" ( Move %3 "%NewFile%" >nul GoTo :Eof ) Set /A ND+=1 Set "NewFile=%BoxOut%\%~1%Ftime%-%ND%%~2" GoTo :Begin GoTo :Eof гггг-мм-дд_ччми.tif Если за одну минуту создадутся несколько файлов, то имена будут иметь вид: гггг-мм-дд_ччми.tif гггг-мм-дд_ччми-2.tif гггг-мм-дд_ччми-3.tif и т д. |
|
------- Отправлено: 16:23, 12-01-2018 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 94
|
Профиль | Отправить PM | Цитировать Доброго времени суток всем!
Есть необходимость перемещать файлы: "2018-01-18.tif", "2018-01-18_(1).tif", "2018-01-18_(2).tif", "2018-01-18_(3).tif", "2018-01-18_(4).tif", "2018-01-18_(5).tif", "2018-01-18_(6).tif", "2018-01-18_(7).tif", "2018-01-18_(8).tif", "2018-01-18_(9).tif", "2018-01-18_(10).tif", "2018-01-18_(11).tif", "2018-01-18_(12).tif", "2018-01-18_(13).tif", "2018-01-18_(14).tif", ... ... ... ... ... ... ... ... ... "2018-01-18_(7000).tif", "2018-01-18_(7001).tif", "2018-01-18_(7002).tif", "2018-01-18_(7003).tif", "2018-01-18_(7004).tif", ... ... ... ... ... ... ... ... ... Но таким образом, чтобы переместились все файлы, кроме последнего. Т.е. эти переместились: "2018-01-18.tif", "2018-01-18_(1).tif", "2018-01-18_(2).tif", "2018-01-18_(3).tif", "2018-01-18_(4).tif", "2018-01-18_(5).tif", "2018-01-18_(6).tif", "2018-01-18_(7).tif", "2018-01-18_(8).tif", "2018-01-18_(9).tif", "2018-01-18_(10).tif", "2018-01-18_(11).tif", "2018-01-18_(12).tif", "2018-01-18_(13).tif", "2018-01-18_(14).tif", ... ... ... ... ... ... ... ... ... "2018-01-18_(7000).tif", "2018-01-18_(7001).tif", "2018-01-18_(7002).tif", "2018-01-18_(7003).tif", А этот остался: "2018-01-18_(7004).tif". Подскажите пожалуйста, как реализовать? |
Отправлено: 07:47, 09-06-2018 | #22 |
Ушел из жизни Сообщения: 8595
|
Профиль | Сайт | Отправить PM | Цитировать it3, плохо что у вас имена файлов не структурированы, и при простом анализе файл, например, "2018-01-18_(6).tif", будет идти после файлов с "2018-01-18_(5000).tif" по "2018-01-18_(5999).tif".
|
------- Отправлено: 10:16, 09-06-2018 | #23 |
Пользователь Сообщения: 94
|
Профиль | Отправить PM | Цитировать Цитата mwz:
Так ведь? |
|
Отправлено: 10:41, 09-06-2018 | #24 |
Ушел из жизни Сообщения: 8595
|
Профиль | Сайт | Отправить PM | Цитировать Цитата it3:
А здесь можно организовать цикл: Проверяем два последовательных файла (причём что это за файлы — всё равно). Если второго файла нет — завершаем работу: задача выполнена. Если есть — сравниваем даты, более старый перемещаем и идём в начало цикла. Впрочем, если переводить текст в скобках в числа — можно делать практически точно так же, сравнивая преобразованные имена. |
|
------- Последний раз редактировалось mwz, 09-06-2018 в 11:03. Отправлено: 10:54, 09-06-2018 | #25 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать it3,
Цитата it3:
|
|
------- Отправлено: 11:19, 09-06-2018 | #26 |
Crazy Сообщения: 1218
|
Профиль | Отправить PM | Цитировать Цитата it3:
А так, с помощью powershell и ... ну да ладно, пока без лирики: script.ps1 |
|
------- Отправлено: 11:35, 09-06-2018 | #27 |
Пользователь Сообщения: 94
|
Профиль | Отправить PM | Цитировать Исправил маску:
@Echo Off Set "BoxIn=c:\Temp\Archive\" Set "BoxOut=c:\Temp\Archive\1\" Set "Mask=20??-??-??_(*).tif" FOR /F "usebackq skip=1 delims=" %%f IN (`2^>nul Dir "%BoxIn%\%Mask%" /B /A:-D /O:-D /T:C`) DO >nul Move "%BoxIn%\%%f" "%BoxOut%\" GoTo :Eof Скриншоты во вложении. |
Отправлено: 11:52, 09-06-2018 | #28 |
Пользователь Сообщения: 94
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
Скрипт работает. Спасибо. |
|
Отправлено: 11:55, 09-06-2018 | #29 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать it3, Подозреваю, Вы используете тестовую папку, в которую накопировали файлы. И в каком порядке они копировались (создавались при этом) - Вам лучше знать. Как и то, какое время на скриншотах отображено. Попробуйте скрипт с ключом не /T:C (по времени создания) а /T:W (по времени изменения).
Цитата it3:
Кроме того, останутся все файлы 20??-??-??.tif. Вас это устраивает? |
|
------- Последний раз редактировалось megaloman, 09-06-2018 в 12:44. Отправлено: 12:34, 09-06-2018 | #30 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Переименование/перемещение файла через drag&drop. | VoyS | Скриптовые языки администрирования Windows | 3 | 17-06-2016 21:45 | |
CMD/BAT - Архивирование, переименование и перемещение файлов с помощью BAT-файла | kirillius | Скриптовые языки администрирования Windows | 7 | 13-05-2016 12:57 | |
CMD/BAT - переименование группы файлов с запросом начального номера и перемещение | kozikozi | Скриптовые языки администрирования Windows | 19 | 29-07-2014 19:31 | |
CMD/BAT - [решено] Скрипт перемещение+переименование файла | Pyrocar | Скриптовые языки администрирования Windows | 2 | 30-08-2010 14:25 |
|