|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Переименование и копирование файлов |
|
CMD/BAT - [решено] Переименование и копирование файлов
|
Пользователь Сообщения: 60 |
Профиль | Отправить PM | Цитировать Добрый день! Хочу создать батник, который бы переименовывал файлы в папке и копировал их в итоговую "Total"
Есть две папки, "1" и "2" и в обеих лежат файлы c именами: check1,check2,check3.... и т.д Нужно чтобы нумерация начиналась с 001 и к имени добавлялся номер папки. например check001_1, check002_1, check003_1 - это для папки "1" и например check001_2, check002_2, check003_2 - для папки "2" файлов может быть более тысячи Для меня это нереально( Пробовал только переименовывать вот таким кодом for /f "tokens=*" %%a in ('dir /b C:\Onkassa\Rename\1\*.*') do ren C:\Onkassa\Rename\1\%%a 001_1%%a в итоге переименован только первый файл 001_1check |
|
Отправлено: 11:24, 17-08-2018 |
Ветеран Сообщения: 2703
|
Профиль | Отправить PM | Цитировать jordan_74, я предполагал, что папка 1 и 2 (уу меня это 1111 и 2222 - имена могут быть произвольными) находятся в корне какой-то общей папки. У меня это Z:\Box_In (у Вас может быть иное, например D: или \\ server\shr и т д) То есть, полные пути у меня Z:\Box_In\1111 и Z:\Box_In\2222.
Меня мучали сомнения в этом. Не проблема переписать скрипт, если папка 1 и 2 - это только имена конечных папок разных путей. Но из постановки это совершенно не следует. |
------- Отправлено: 09:16, 20-08-2018 | #31 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 60
|
Профиль | Отправить PM | Цитировать megaloman,
Да, все верно. Есть корневая папка "Rename", в которой и лежат папки "1", "2", и папка куда должны складываться переименованные файлы "total" тоесть пути выглядят так C:\Onkassa\Rename\1\ , C:\Onkassa\Rename\2\ и C:\Onkassa\Rename\total |
Отправлено: 09:41, 20-08-2018 | #32 |
Пользователь Сообщения: 60
|
Профиль | Отправить PM | Цитировать megaloman,
Работает! Но обратил внимание, когда допустим в папке "1" имена исходных файлов повторяются, система создаёт копию файла допустим "check6 — копия" Так вот такой файл батник уже не обрабатывает, хотя по идее должно быть "check007_1". Это можно как то поправить? |
Отправлено: 14:55, 20-08-2018 | #33 |
Ветеран Сообщения: 2703
|
Профиль | Отправить PM | Цитировать jordan_74, А что Вам нужно, определитесь!
Цитата jordan_74:
У Вас (по идее ) есть файлы check6, check6 — копия, check7 И совершенно неправильно по первоначальной постановке сделать из check6 — копия check007 Что тогда придётся делать с исходной check7 ?? Задача решалась в условиях образования имени ПрефиксНомерРасширение Ставьте задачу, буду думать Потом окажется, что есть файлы check6 — копия — копия - и что тогда? Вам надо сохранять исходную нумерацию или можно перенумеровать все файлы по возрастанию времени создания ? А как пишется копия (после номера, какие знаки: пробел минус пробел копия?) |
|
------- Последний раз редактировалось megaloman, 20-08-2018 в 15:35. Отправлено: 15:23, 20-08-2018 | #34 |
Crazy Сообщения: 1167
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
Цитата jordan_74:
|
||
------- Отправлено: 15:36, 20-08-2018 | #35 |
Ветеран Сообщения: 2703
|
Профиль | Отправить PM | Цитировать jordan_74,
Если элементарно доработать скрипт для смеси файлов
ПрефиксНомерРасширение ПрефиксНомерСуффиксРасширение при условии что нет — копия — копия @Echo Off cls Set "BoxIn=Z:\Box_In" Set "Folds="1111" "2222"" Set "Pref=check" Set "Suff= - копия" Set /A Max=1000 Set "BoxOut=Z:\Box_In\Total" If Not Exist "%BoxOut%" Md "%BoxOut%" Set /A Max1=%Max%-1 FOR /L %%n IN (0,1,%Max1%) DO FOR %%d IN (%Folds%) DO ( FOR %%f IN ("%BoxIn%\%%~d\%Pref%%%n.*") Do ( Set /A MMax=%Max%+%%n Call Copy "%%f" "%BoxOut%\%Pref%%%MMax:~1%%_%%~d%%~xf" >nul Call Ren "%%f" "%Pref%%%MMax:~1%%_%%~d%%~xf" >nul ) FOR %%f IN ("%BoxIn%\%%~d\%Pref%%%n%Suff%.*") Do ( Set /A MMax=%Max%+%%n Call Copy "%%f" "%BoxOut%\%Pref%%%MMax:~1%%_%%~d%%~xf" >nul Call Ren "%%f" "%Pref%%%MMax:~1%%_%%~d%Suff%%%~xf" >nul ) ) Pause GoTo :Eof |
------- Отправлено: 15:53, 20-08-2018 | #36 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
Цитата Iska:
|
|||
Отправлено: 15:53, 20-08-2018 | #37 |
Ветеран Сообщения: 2703
|
Профиль | Отправить PM | Цитировать Iska, Вы не политкорректны. Надо говорить: умный представитель северного народа, умный!
Иной раз у оленеводов очень трудно добиться полной откровенности - они бывают по детски наивны и непосредственны Но если хочется получить удовольствие, надо проявить терпимость. Цитата сказано не мной, а весьма уважаемыми людьми:
|
|
------- Последний раз редактировалось megaloman, 20-08-2018 в 16:27. Отправлено: 16:01, 20-08-2018 | #38 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
megaloman, вот насчёт: Цитата megaloman:
Я просто искренне радуюсь, что зараз не ввязался в эту вакханалию ТЗ. Что же до решения — то я бы, как и множество других вещей с трудно формализуемыми или часто меняющимися ТЗ, делал бы в полуавтоматическом режиме в том же Far Manager'е с плагином Visual renaming: Перешёл в потребный каталог, выделил потребные файлы
Вызвал плагин
Задал маску для имени
в виде:
где:
Нажал Ctrl-Enter (умолчальная кнопка {Переименовать} в диалоге), получил искомый результат
Результат не понравился — переименование всегда можно откатить тем же плагином
Использованная маска доступна в истории поля диалога
При желании можно даже задать ей приоритет, чтобы она всегда была закреплена наверху в истории Всех делов — примерно на полминуты с нуля, и секунд десять — при ранее сохранённой маске. |
||
Отправлено: 17:12, 20-08-2018 | #39 |
Crazy Сообщения: 1167
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Цитата YuS_2:
Цитата megaloman:
Лучше дождаться развернутых условий... |
|||
------- Последний раз редактировалось YuS_2, 20-08-2018 в 18:11. Отправлено: 18:02, 20-08-2018 | #40 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Переименование папки и копирование новой из сети. | Lorttt | Скриптовые языки администрирования Windows | 19 | 19-06-2017 18:56 | |
CMD/BAT - Копирование файла и переименование согласно списка из exel | TPOJIb_55 | Скриптовые языки администрирования Windows | 4 | 01-06-2016 09:28 | |
CMD/BAT - Копирование файлов из подкаталогов и их переименование в название папки | lexxxyatina | Скриптовые языки администрирования Windows | 7 | 13-11-2014 09:44 | |
CMD/BAT - [решено] Копирование и переименование файла по особой маске | DARK-Silver666 | Скриптовые языки администрирования Windows | 5 | 20-12-2012 21:22 | |
VBS/WSH/JS - [решено] переименование и копирование папки | Anufriev | Скриптовые языки администрирования Windows | 6 | 22-05-2012 08:11 |
|