![]() |
Переименование части имен файлов
Здравствуйте.
Имеется куча файлов с латинскими названиями. Например: "brotogerys panychlorus, strix passerina, jynx torquilla.txt" и тому подобные. Также есть csv файл с переводом, т.е. "strix passerina=Little Owl", "brotogerys panychlorus=Yellow-billed Thrush" (две колонки: первая - латинские, вторая - английские) и т.п. Вообщем нужно все латинские названия в именах файлов переименовать в английские. Желательной батником. Своих познаний не хватило. Нужна помощь. Можно составить батник только для первых указанных выше названий, дальше я пойму принцип и составлю все что нужно в пакетном режиме. Заранее спасибо. |
use809, А разделитель в csv какой? Допустим ';'
Код:
@echo off |
Разделитель ;
У меня файлы вида "brotogerys panychlorus, strix passerina, jynx torquilla.txt", т.е. в названии одного файла несколько (2-3) латинских словосочетаний. В csv файле эти же названия, но по-одному, одиночные, т.е. "brotogerys panychlorus;Yellow-billed Thrush", "strix passerina;Little Owl". Вот эти одиночные и нужно найти в названиях файлов и заменить на английские. Предложенный Вами вариант ищет только одиночные названия (ren "strix passerina.txt" в "Little Owl.txt"). По одиночным у меня батник свой есть. Нужен именно, чтобы переименовывал часть имени файлов. |
Видимо, нужно что-то вроде этого алгоритма:
1. прочитать имя первого файла 2. внести его имя в строковую переменную 3. заменить в переменной все найденные из csv-файла значения из первой колонки на значения из 2-й колонки 4. переименовать файл на полученное значение переменной. 5. перейти к следующему файлу |
Код:
@echo off |
Помогло! Большое спасибо!
|
Видимо, нужна небольшая доработка.
Вот часть csv-файла: dysithamnus_leucostictus;White-spotted Antvireo dysithamnus_leucostictus_leucostictus;White-streaked Antvireo (White-streaked) dysithamnus_leucostictus_tucuyensis;White-streaked Antvireo (Venezuelan) Вот файл: "dysithamnus_leucostictus.txt" Запускаю bat-файл, после переименования получается: "White-spotted Antvireo, White-streaked Antvireo (White-streaked), White-streaked Antvireo (Venezuelan).txt" А должно быть только "White-spotted Antvireo.txt". Где-то нужно поставить кавычки в скрипте или что-то типа этого? Хотя думаю, решу этот вопро сам (дополнительнзнак введу (!) в конце каждого лат. названия в ориг. именах) |
Цитата:
Практически угадали. Нужно добавить кавычки, тильду и точку с запятой: Код:
@echo off . Но, как выяснил, это тоже не панацея, так как в случае одновременного наличия в CSV-файле строк типа "dysithamnus_leucostictus;White-spotted Antvireo" и "bla-bla-bla_dysithamnus_leucostictus;White-streaked Antvireo (White-streaked)" файл "dysithamnus_leucostictus.txt" также будет переименован некорректно. Выход нашёл в использовании команды "FINDSTR" вместо команды "FIND": Код:
@echo off , |
Вложений: 1
Объясню на примере, что получается.
Если файл имеет название "ptilinopus_porphyraceus, ptilinopus_pelewensis.txt", то переводит замечательно "Crimson-crowned Fruit-Dove, Palau Fruit-Dove.txt" Некоторых латинских названий нет в csv файле, т.е. их переводить не нужно, а оставить латинскими, т.к. в csv их не нашлось. Если имя "ptilinopus_rarotogensis, ptilinopus_fasciatus, ptilinopus_porphyraceus, ptilinopus_chrysogaster, ptilinopus_pelewensis" (1, 2 и 4-го нет в csv-файле, нет перевода), то оставляет таким же и в конце добавляет ", Palau Fruit-Dove.txt", т.е. "ptilinopus_rarotogensis, ptilinopus_fasciatus, ptilinopus_porphyraceus, ptilinopus_chrysogaster, ptilinopus_pelewensis, Palau Fruit-DoveFruit-Dove". Хотя нужно, чтобы было: "ptilinopus_rarotogensis, ptilinopus_fasciatus, Crimson-crowned Fruit-Dove, ptilinopus_chrysogaster, Palau Fruit-Dove" Пока не разобрался, что поправить. Во вложении txt-файл с латинскими названиями, data.csv и батник. |
Код:
@echo off |
Благодарю! Сам бы я точно не додумался. Все работает как надо.
|
Время: 20:33. |
Время: 20:33.
© OSzone.net 2001-