![]() |
Переименование фалов по маске
Уважаемые друзья, добрый вечер!
Подскажите пожалуйста. Такая задача. В папку store, сохраняются файлы вида i02_155567_v_f_160523.txt, требуется согласно данной маске файла переименовать файл в ООО ИНН-АП-Рога Копыта_лист_230516.txt |
Цитата:
|
Не без помощи телепатии, конечно, взирая на немногословность ТС, могу предположить что хотелось это:
Код:
@echo off |
Добрый день!
Да извините пожалуйста, за такую постановку задачи, давайте более подробно 1. Файл исходник вида i02_155567_v_f_160523.txt - где "155567" - номер, которому соответствует название "Рога Копыта", "160523" - формирования файла, которая должна переноситься в новое название файла 2. Файл кладется в папку F:\Store При отработке @echo off set "d=store" for /f "tokens=1-5 delims=_" %%a in ('dir/a-d/b "%d%"^|findstr/irc:"\<i[0-9][0-9]_[0-9]*_v_f_[0-9]*\>"') do ren "%d%\%%a_%%b_%%c_%%d_%%e" "ООО ИНН-АП-Рога Копыта_лист_%%e" exit появляется ошибка "непредвиденное появление %%a" |
mych_man,
Я, конечно, все понимаю, но не до такой же степени! код, что я привел выше копируется отсюда, вставляется в любой созданный текстовый файл, например "name.txt", потом меняем расширение этого файла на .bat, получив при этом, например, "name.bat" и при наличии папки "store" и файла что вы привели запускаем созданный файл из любого места (если указать полный путь к папке, у вас вторая строка кода должна быть Код:
set "d=F:\Store" Кстати больше света на маску файла вы не пролили. |
От того вы полностью описали "как сделать bat" ваш вариант рабочим не становится))
Однако, я хочу поблагодарить вас за старания, мне удалось с помощью вашего решения изменить имя файла, правда на нечитаемые символы. По поводу маски файла, не понимаю, что можно еще описать? зависимость названия файла от маски "155567" и дублирования числа формирования, напишите пожалуйста, что можно еще добавить. Еще раз, спасибо за ваши старания. |
Цитата:
|
Цитата:
Друзья, поясните пожалуйста, где в этом скрипте и что необходимо менять, если к примеру необходимо будет переименовывать файлы с другими масками на другие имена, зависимость прежняя i02_название компании_v_f_дата.txt Насколько я понял, данный скрипт умеет переименовывать только файл i02_155567_v_f_160523.txt. Заранее спасибо! |
Цитата:
Цитата:
сейчас маска "началослова iчислочисло_любыечисла_v_f_любыечисла конецслова", причем все до между и после _ есть в переменной и может быть опущено изменено добавлено. Имя файла может быть сейчас и таким i45_9876543_v_f_123456789.txt, при коде выше остается только эта часть 123456789.txt |
Ну, хоть коллега alpap понял ;).
|
Огромное спасибо, удалось написать код для группы файлов.
Скажите, пожалуй последний вопрос, если к маске файла добавляет еще одна группа символов i02_155567_v_f_160523_GRE.txt, то что в коде надо добавить, я пробовал добавлять GRE в любое место (v_f_[0-9]*\>"') не помогает. |
Код:
@echo off |
Файл исходник i02_155567_v_f_160523.txt -
1. i02 - значение неизменное. 2. 155567 - это номер, _v_f_ - это буквенное значение, оба эти значения могут меняться, от точного соответствия значения блока "155567_v_f_" - "номер_буква_буква_" формируется часть имени файла (ООО ИНН-АП-'номербуквабуква'_лист_230516.txt ) (Рога Копыта, Копыта Рога, Рогатые копыта). 3. Далее i02_155567_v_f_160523.txt - 160523 - должно просто переноситься в новое имя файла. 4. Также могут встречаться файлы вида i02_155567_v_f_160523_GRE.txt - где GRE - всегда неизменное значение, при наличии которого в новое имя оно переносится в неизменном виде, а именно ООО ИНН-АП-Рога Копыта_лист_230516_USD.txt |
Исходя из того что вижу конечное имя берет все после 5го токена по _ и это может быть как 230516.txt так и 160523_GRE.txt - хорошо, здесь ясно. Вот это "значения могут меняться, от точного соответствия значения блока "155567_v_f_" - "номер_буква_буква_" " - более чем непонятно, очень подробно и точно как именно меняются, на что, каков полный процесс формирования из этой части в эту "Рога Копыта, Копыта Рога, Рогатые копыта". Теперь надо знать насколько разные или наоборот похожие имена файлов в папке, чтобы переименовывать нужные или там надо переименовать все что есть, надо чтобы вы дали несколько с десяток имен файлов в папке, которые должны быть переименованы и в их числе максимальное количество различий между собой в имени.
Без формирования "Рога Копыта, Копыта Рога, Рогатые копыта" Код:
@echo off |
Друзья, огромное спасибо, за помощь!
С 6 токеном разобрался, alpap. отдельное спасибо! И последний вопрос, скажите пожалуйста, как можно изменить формат числа '160530', в файле исходнике выглядит так i02_155567_v_f_160523_GRE.txt, на 230516 в переименованном файле? |
Цитата:
Код:
if "%%c"=="" (set "ds=%%b") else (set "ds=%%b_%%c") |
mych_man, только учтите, что формат в исходном имени не зря выбран как "ГГММДД". Иначе при сортировке по алфавиту вас будут ждать увлекательные развлечения при визуальном поиске. Как впрочем и в некоторых других ситуациях.
|
Цитата:
|
Друзья, извините я решил предыдущую проблему с подстановкой символов GRE первым, вашим сриптом, ниже пример с вариациями
echo@ off chcp 866 set "d=E:\Report\in" for /f "tokens=1-5 delims=_" %%a in ('dir/a-d/b "%d%"^|findstr/irc:"\<i02_09971_v_d_[0-9]*\>"') do ren "%d%\%%a_%%b_%%c_%%d_%%e" "ООО-ИНН-РОГА Копыта_ОГРН_ОТЧЕТ_%%e" for /f "tokens=1-5 delims=_" %%a in ('dir/a-d/b "%d%"^|findstr/irc:"\<i02_09972_k_d_[0-9]*\>"') do ren "%d%\%%a_%%b_%%c_%%d_%%e" "ЗАО-ИНН-БАБА ЯГА_ОГРН_ОТЧЕТ_%%e" for /f "tokens=1-6 delims=_" %%a in ('dir/a-d/b "%d%"^|findstr/irc:"^i02_09971_v_d_[0-9]*_GRE\>"') do ren "%d%\%%a_%%b_%%c_%%d_%%e_%%f" "ООО-ИНН-РОГА КОПЫТА_ОГРН_ОТЧЕТ_%%e_%%f.txt" for /f "tokens=1-6 delims=_" %%a in ('dir/a-d/b "%d%"^|findstr/irc:"^i02_09972_v_d_[0-9]*_USD\>"') do ren "%d%\%%a_%%b_%%c_%%d_%%e_%%f" "ЗАО-ИНН-БАБА ЯГА_ОГРН_ОТЧЕТ_%%e_%%f.txt" как здесь изменть очередность проставленной в наименовании файла дате, чтобы получилось из i02_09971_v_d_160523.txt - ООО ИНН РОГА Копыта_ОГРН_ОТЧЕТ_230516.txt ? |
Друзья, спасибо всем участникам обсуждений, задача решена.
alpap, еще раз огромное спасибо! |
Время: 22:14. |
Время: 22:14.
© OSzone.net 2001-