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

Компьютерный форум 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


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

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


Цитата YuS_2:
Лучше дождаться развернутых условий... »
Если долго сидеть на берегу реки, можно дождаться, как мимо тебя проплывёт труп врага. Правда, твоей жизни может на это и не хватить

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


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



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


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


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

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


megaloman,
Цитата megaloman:
Вам надо сохранять исходную нумерацию или можно перенумеровать все файлы по возрастанию времени создания ? »
По возрастанию времени создания не получится я полагаю, всем файлам проставляется одинаковое время - время распаковки архива.

Постараюсь описать подробно:

Файлы чеков я забираю из архива, в котором они пронумерованы условно от check1 до check100. Я кладу архив в папку "1" и распаковываю.
Если в папке распаковать более одного архива, тогда при совпадении имен к имени файлов второго архива добавляется суффикс "_1" например check1_1
Если ещё архив, соответственно будет имя check1_2 и т.д, имя файла корректируется в зависимости от кол-ва архивов. Все это самостоятельно делает 7-Z архиватор.

Поэтому прошу прощения) ввел в заблуждение, суффикса "копия" не будет...

Именно в этом и сложность, как их пронумеровать по порядку..?

Отправлено: 11:07, 21-08-2018 | #42


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


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

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


Цитата megaloman:
Iska,
Цитата когда-то популярная песня:
закрывала уши я, я её не слушала, ой, мама, моя мамочка, как ты была права! »
Откровенно говоря это трындец)), даже просто логику переименования представить не могу, не говоря уже о синтаксисе и написания батника...(

Отправлено: 11:59, 21-08-2018 | #43


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата megaloman:
Если долго сидеть на берегу реки, можно дождаться »
Кстати, это немного не о том... смысл сих фраз не надо понимать буквально...
Если сказать их по-русски, то получится: всему свое время, но не упусти момент... т.е. это об умении выжидать наиболее подходящий момент для чего-либо.
И он ещё пока, судя по всему, не наступил...


Цитата jordan_74:
даже просто логику переименования представить не могу »
если не получается представить логику...
Как уже говорил выше, опишите все возможные варианты входящих данных и то, что из них требуется получить в итоге...
Содержимое файлов имеет отношение к нумерации и вообще нумерация имеет какое-либо значение? Т.е. если просто взять и откинуть все существующие цифры в конце имени файла и перенумеровать их заново - устроит такое решение?
А ещё можно перенумеровать их по дате изменения файла, которая сохраняется даже после извлечения из архива...
В общем, соберитесь с духом и попробуйте таки сформулировать саму задачу (о батниках и синтаксисе голову не ломайте, это только запутает).

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


Отправлено: 12:14, 21-08-2018 | #44


Ветеран


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

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


Цитата jordan_74:
Постараюсь описать подробно: »
Не прошло и полугода пяти страниц темы, как мы добрались таки до того, с чего следовало начинать — до постановки задачи, а не попыток как-нибудь выбить реализацию уже выбранного решения. Браво!


Цитата jordan_74:
при совпадении имен к имени файлов второго архива добавляется суффикс "_1" например check1_1
Если ещё архив, соответственно будет имя check1_2 и т.д, имя файла корректируется в зависимости от кол-ва архивов. Все это самостоятельно делает 7-Z архиватор. »
«Зачем Ви тѓ́авите:
Скрытый текст
?!» Не делает он ничего такого «самостоятельно». Пока Вы не нажмёте в диалоге подтверждения кнопку «Переименовать автоматически» — не делает.

Отправлено: 12:28, 21-08-2018 | #45


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


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

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


YuS_2,
Ну что же, поехали!!!

Есть некое кол-во архивов с файлами, которые в каждом архиве пронумерованы от check1 до условно check100.
Есть папка 1 и 2 , куда архивы и кладутся. Файлов в папка должно быть менее 1000, тоесть 999
Также есть папка Total
Содержимое файлов никакого отношения к нумерации не имеет.

Нужно:
1)Распаковать архив(ы) в папках 1 и 2, после чего файл архива удалить.
2)Переименовать файлы с именами от check001 до check999 при этом добавить к имени значение названия папки 1 или 2 :
А именно от check001_1 до check999_1 и соответственно check001_2 до check999_2
3)Скопировать переименованные файлы в папку "Total"

Цитата YuS_2:
А ещё можно перенумеровать их по дате изменения файла, которая сохраняется даже после извлечения из архива... »
Пробовал распаковывать, время для всех файлов ставится одинаковое. Если получится сделать так, то это будет самое верное решение.

Цитата Iska:
?!» Не делает он ничего такого «самостоятельно». Пока Вы не нажмёте в диалоге подтверждения кнопку «Переименовать автоматически» — не делает. »
Согласен

Отправлено: 12:53, 21-08-2018 | #46


Ветеран


Contributor


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

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


Цитата Iska:
Пока Вы не нажмёте в диалоге подтверждения кнопку «Переименовать автоматически» — не делает »
Если файлы check1 и check1_1 совершенно одинаковые, нефиг их плодить. Другое дело, если check1 - это совпадающие имена разных файлов.
Цитата jordan_74:
Откровенно говоря это трындец)), »
Найдите того, кто придумал имена папок 1 и 2 и душите его, душите .
Допустим, есть исходные файлы check123 и check123_1
Как отличить: check123_1 от переименованного check123 + имя папки _1 ?
Или папки называйте, например, A и B, D1 и D2, 1111 и 2222(лучше не надо), то есть, чтобы от номеров в файле отличались.
Вот решение для задачи, как она поставлена с учетом вышеизложенного:
имеются исходные файлы checkN.ext и checkN_M.ext в папке D.
Скопировать/переименовать их в check00N_D.ext и check00N_M_D.ext
Код: Выделить весь код
@Echo Off
cls
	Set "BoxIn=Z:\Box_In"
	Set "Folds="A" "B""
	Set "Pref=check"
	Set /A Suff=10
	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 (1,1,%Max1%) DO FOR %%d IN (%Folds%) DO (
		Set /A MMax=%Max%+%%n
		FOR %%f IN ("%BoxIn%\%%~d\%Pref%%%n.*") Do (
rem echo %%f
			Call Copy "%%f" "%BoxOut%\%Pref%%%MMax:~1%%_%%~d%%~xf" >nul
			Call Ren "%%f" "%Pref%%%MMax:~1%%_%%~d%%~xf" >nul
		)

		FOR /L %%m IN (1,1,%Suff%) Do FOR %%f IN ("%BoxIn%\%%~d\%Pref%%%n_%%m.*") Do (
rem echo %%f
			Call Copy "%%f" "%BoxOut%\%Pref%%%MMax:~1%%_%%m_%%~d%%~xf" >nul
			Call Ren "%%f" "%Pref%%%MMax:~1%%_%%m_%%~d%%~xf" >nul
		)
	)
Pause
GoTo :Eof
Здесь Suff=10 - максимальный рассматриваемый номер версии файла. Можно поставить любой другой. Чем он больше, тем дольше будет выполняться скрипт
Цитата YuS_2:
Кстати, это немного не о том... смысл сих фраз не надо понимать буквально...
Если сказать их по-русски, то получится: всему свое время »
Позвольте Вам не позволить! Скорее по русски: Под лежачий камень вода не течет. Или: Вода камень точит. Мне более по нраву тезис: Дорогу осилит идущий. А созерцательное сидение на берегу реки не катит. На реку, огонь и работающего человека можно смотреть бесконечно (и безрезультатно)

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


Последний раз редактировалось megaloman, 21-08-2018 в 13:38.

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

Отправлено: 13:24, 21-08-2018 | #47


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата megaloman:
Позвольте Вам не позволить! »
Да как Вам будет угодно!
Вообще, истина - она одна, а вот правда у каждого своя.
Трактовкой древних мудростей, можно высказать только чисто субъективное мнение, а вот истинное значение, могло быть доступно только сочинителю... но, увы, спросить его о нем, уже невозможно.

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


Отправлено: 14:04, 21-08-2018 | #48


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


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

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


Изображения
Тип файла: jpg ИТОГ.jpg
(187.5 Kb, 7 просмотров)

megaloman,
Это то, что нужно!

Последний раз редактировалось jordan_74, 21-08-2018 в 14:36. Причина: забыл картинку


Отправлено: 14:23, 21-08-2018 | #49


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


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

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


megaloman,

И ещё просьба, можно модифицировать, чтобы избежать этих подчеркиваний???
К имени файла вместо _1 , _2 и т.д добавить часть имени архива!? А именно часть номера счета
Наименование архива выглядит следующим образом "Расчетный счет 40702810816540044924.zip"
В имени архива 407028 остается неизменным, а остальная часть меняется в зависимости от номера счета.

Можно к имени добавить оставшуюся часть номера счета ,в данном случае "10816540044924" чтобы в итоге получить например check007_10816540044924_A ???

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



Компьютерный форум 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




 
Переход