|
Компьютерный форум 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 |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
|
|
------- Отправлено: 18:50, 20-08-2018 | #41 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 60
|
Профиль | Отправить PM | Цитировать megaloman,
Цитата megaloman:
Постараюсь описать подробно: Файлы чеков я забираю из архива, в котором они пронумерованы условно от check1 до check100. Я кладу архив в папку "1" и распаковываю. Если в папке распаковать более одного архива, тогда при совпадении имен к имени файлов второго архива добавляется суффикс "_1" например check1_1 Если ещё архив, соответственно будет имя check1_2 и т.д, имя файла корректируется в зависимости от кол-ва архивов. Все это самостоятельно делает 7-Z архиватор. Поэтому прошу прощения) ввел в заблуждение, суффикса "копия" не будет... Именно в этом и сложность, как их пронумеровать по порядку..? |
|
Отправлено: 11:07, 21-08-2018 | #42 |
Пользователь Сообщения: 60
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
|
|
Отправлено: 11:59, 21-08-2018 | #43 |
Crazy Сообщения: 1171
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
Если сказать их по-русски, то получится: всему свое время, но не упусти момент... т.е. это об умении выжидать наиболее подходящий момент для чего-либо. И он ещё пока, судя по всему, не наступил... Цитата jordan_74:
Как уже говорил выше, опишите все возможные варианты входящих данных и то, что из них требуется получить в итоге... Содержимое файлов имеет отношение к нумерации и вообще нумерация имеет какое-либо значение? Т.е. если просто взять и откинуть все существующие цифры в конце имени файла и перенумеровать их заново - устроит такое решение? А ещё можно перенумеровать их по дате изменения файла, которая сохраняется даже после извлечения из архива... В общем, соберитесь с духом и попробуйте таки сформулировать саму задачу (о батниках и синтаксисе голову не ломайте, это только запутает). |
||
------- Отправлено: 12:14, 21-08-2018 | #44 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата jordan_74:
Цитата jordan_74:
Скрытый текст
|
||
Отправлено: 12:28, 21-08-2018 | #45 |
Пользователь Сообщения: 60
|
Профиль | Отправить 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 |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Цитата jordan_74:
Допустим, есть исходные файлы 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 Цитата YuS_2:
|
|||
------- Последний раз редактировалось megaloman, 21-08-2018 в 13:38. Отправлено: 13:24, 21-08-2018 | #47 |
Crazy Сообщения: 1171
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
Вообще, истина - она одна, а вот правда у каждого своя. Трактовкой древних мудростей, можно высказать только чисто субъективное мнение, а вот истинное значение, могло быть доступно только сочинителю... но, увы, спросить его о нем, уже невозможно. |
|
------- Отправлено: 14:04, 21-08-2018 | #48 |
Пользователь Сообщения: 60
|
Профиль | Отправить PM | Цитировать megaloman,
Это то, что нужно! |
Последний раз редактировалось jordan_74, 21-08-2018 в 14:36. Причина: забыл картинку Отправлено: 14:23, 21-08-2018 | #49 |
Пользователь Сообщения: 60
|
Профиль | Отправить PM | Цитировать megaloman,
И ещё просьба, можно модифицировать, чтобы избежать этих подчеркиваний??? К имени файла вместо _1 , _2 и т.д добавить часть имени архива!? А именно часть номера счета Наименование архива выглядит следующим образом "Расчетный счет 40702810816540044924.zip" В имени архива 407028 остается неизменным, а остальная часть меняется в зависимости от номера счета. Можно к имени добавить оставшуюся часть номера счета ,в данном случае "10816540044924" чтобы в итоге получить например check007_10816540044924_A ??? |
Отправлено: 14:33, 21-08-2018 | #50 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|