Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Переименование и копирование файлов

Ответить
Настройки темы
CMD/BAT - [решено] Переименование и копирование файлов

Пользователь


Сообщения: 60
Благодарности: 0

Профиль | Отправить 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

 

Ветеран


Contributor


Сообщения: 2703
Благодарности: 1683

Профиль | Отправить 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
Благодарности: 0

Профиль | Отправить 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
Благодарности: 0

Профиль | Отправить PM | Цитировать


megaloman,
Работает! Но обратил внимание, когда допустим в папке "1" имена исходных файлов повторяются, система создаёт копию файла допустим "check6 — копия"
Так вот такой файл батник уже не обрабатывает, хотя по идее должно быть "check007_1". Это можно как то поправить?

Отправлено: 14:55, 20-08-2018 | #33


Ветеран


Contributor


Сообщения: 2703
Благодарности: 1683

Профиль | Отправить PM | Цитировать


jordan_74, А что Вам нужно, определитесь!
Цитата jordan_74:
когда допустим в папке "1" имена исходных файлов повторяются, система создаёт копию файла допустим "check6 — копия"
Так вот такой файл батник уже не обрабатывает, хотя по идее должно быть "check007 »
Это кривая идея.
У Вас (по идее ) есть файлы check6, check6 — копия, check7
И совершенно неправильно по первоначальной постановке сделать из check6 — копия check007
Что тогда придётся делать с исходной check7 ??
Задача решалась в условиях образования имени
ПрефиксНомерРасширение
Ставьте задачу, буду думать
Потом окажется, что есть файлы check6 — копия — копия - и что тогда?
Вам надо сохранять исходную нумерацию или можно перенумеровать все файлы по возрастанию времени создания ?
А как пишется копия (после номера, какие знаки: пробел минус пробел копия?)

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 20-08-2018 в 15:35.


Отправлено: 15:23, 20-08-2018 | #34


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1167
Благодарности: 486

Профиль | Отправить PM | Цитировать


Цитата megaloman:
Потом окажется, что есть файлы check6 — копия — копия - и что тогда? »
собственно, о чем и была речь в личке...

Цитата jordan_74:
Это можно как то поправить? »
Можно сделать многое (не всё, конечно, но многое), но для этого необходимо наиболее полное описание условий... и не в процессе создания кода, а изначально. Если есть желание получить полностью рабочее решение, постарайтесь учесть все возможные варианты в условии задачи.

-------
scio me nihil scire. Ѫ

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:36, 20-08-2018 | #35


Ветеран


Contributor


Сообщения: 2703
Благодарности: 1683

Профиль | Отправить 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
Суффикс может быть любым, только указывайте в нём все знаки, в том числе и пробелы в начале и конце суффикса. Если в префиксе или суффиксе есть кириллические символы, извольте сохранить скрипт в 866 кодировке.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:53, 20-08-2018 | #36


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата YuS_2:
Цитата megaloman:
Потом окажется, что есть файлы check6 — копия — копия - и что тогда? »
собственно, о чем и была речь в личке... »
[Iska гладит себя по голове]: умный чукча, умный! :
Цитата Iska:
Нет, я тут пас — мало желания на пакетных файлах пытаться выцепить значимую часть имени из произвольно взятых: »

Отправлено: 15:53, 20-08-2018 | #37


Ветеран


Contributor


Сообщения: 2703
Благодарности: 1683

Профиль | Отправить PM | Цитировать


Iska, Вы не политкорректны. Надо говорить: умный представитель северного народа, умный!
Иной раз у оленеводов очень трудно добиться полной откровенности - они бывают по детски наивны и непосредственны Но если хочется получить удовольствие, надо проявить терпимость.
Цитата сказано не мной, а весьма уважаемыми людьми:
Кто хочет сделать - ищет способ, кто не хочет - причину.
Каждое решение плодит новые проблемы. »

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 20-08-2018 в 16:27.


Отправлено: 16:01, 20-08-2018 | #38


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата megaloman:
Iska, Вы не политкорректны. Надо говорить: умный представитель северного народа, умный! »
Мне можно, я ж это про себя .

megaloman, вот насчёт:
Цитата megaloman:
Каждое решение плодит новые проблемы. »
Вы совершенно правы.

Я просто искренне радуюсь, что зараз не ввязался в эту вакханалию ТЗ.


Что же до решения — то я бы, как и множество других вещей с трудно формализуемыми или часто меняющимися ТЗ, делал бы в полуавтоматическом режиме в том же Far Manager'е с плагином Visual renaming:
Перешёл в потребный каталог, выделил потребные файлы

Вызвал плагин

Задал маску для имени
в виде:
Код: Выделить весь код
check[C001+1]_2
где:
  • check — постоянная часть имени (вводим ручками или подставляем по Shift-Enter из имени файла и убираем лишнее);
  • [C001+1] — шаблон маски (C — счётчик, 001 — в счётчике будет три символа, начиная с единицы, +1 — приращение счётчика);
  • _2 — постоянная часть имени в виде имени папки, тупо вводим ручками (ну, или можно предварительно просто скопировать имя каталога в буфер обмена и теперь вставить, либо же можно вставить полный путь по Ctrl-[/Ctrl-] и убрать лишнее — кому что нравится).


Нажал Ctrl-Enter (умолчальная кнопка {Переименовать} в диалоге), получил искомый результат



Результат не понравился — переименование всегда можно откатить тем же плагином



Использованная маска доступна в истории поля диалога


При желании можно даже задать ей приоритет, чтобы она всегда была закреплена наверху в истории

Всех делов — примерно на полминуты с нуля, и секунд десять — при ранее сохранённой маске.
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:12, 20-08-2018 | #39


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1167
Благодарности: 486

Профиль | Отправить PM | Цитировать


Цитата Iska:
[Iska гладит себя по голове]: умный чукча, умный! »
Да-да, это мы тоже отметили:
Цитата YuS_2:
Угу, именно об этом Iska, сразу и написал, с чем я тоже согласен... это всё, опять таки, неполные условия.


Цитата megaloman:
Суффикс может быть любым »
Думаю, надо погодить с решениями, ибо вполне может оказаться, что будут одновременно присутствовать несколько различных префиксов, да и суффиксы возможны в различных вариантах...
Лучше дождаться развернутых условий...

-------
scio me nihil scire. Ѫ


Последний раз редактировалось YuS_2, 20-08-2018 в 18:11.


Отправлено: 18:02, 20-08-2018 | #40



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Переименование и копирование файлов

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход