![]() |
Переименовать файл по содержимому
Приветствую. Помогите, пожалуйста, я не спец.
Есть очень много файлов default.htm, каждый лежит в своей папке. Это html страницы, внутри у каждой из них есть тэг <title>Название страницы</title>. Как бы переименовать каждый файл default.htm в Название страницы.html ? Повторюсь, каждый в своей папке, так что пересечений не будет. И еще в названии страницы присутствует символ / (например русское / английское название) его надо на что-то заменить. И может быть еще какие-то запрещенные символы. |
Код:
@echo off |
Georgio, уж проще целиком на PowerShell, нежели вызывать его N раз.
deniskx, в общем — полностью программно никак. Разве что у Вас удачно окажется исключительно ANSI/1251 (или иная, но одинаковая для всех страниц кодировка, а не какая-нибудь солянка из UTF-8, отданная в KOI-8 и помеченная iso-8859-1, например. Ну, и все entities в <TITLE> также надо преобразовывать в нормальные символы. |
Цитата:
|
Georgio, ???
|
Georgio, некоторые файлы переименовались, некоторые нет. И кириллица запортилась. Можно PowerShell и vbs скрипты, я не против. Главное, чтобы получилось. Там еще во вложенных папках лежат txt и файлы без расширения, их бы не запортить.
Цитата:
|
Цитата:
Не знаю, что там у Вас такое. Данный код у меня и с UTF-8 отработал, и кириллицу не "запортил". A прикрепить образец файла, который не переименовался, и образец файла, в котором "кириллица запортилась", запаковав оба в архив, -- не вариант? Может, кто-то и разберётся... |
Цитата:
Код:
Ошибка в синтаксисе команды. Мой вариант для UTF-8: Код:
Add-Type -AssemblyName System.Web |
Цитата:
Я пересохранил в Win UTF-8 с BOM и ваш скрипт нормально отработал, кроме одного файла (но у меня очень маленькая выборка пока из 10 случайных файлов, так то их десятки тысяч). От имени остался только конец после точки. Вот с таким Код:
<title>«The Secret Circle. The Temptation.» / «Тайный круг. Искушение.» :: Notabenoid.Com</title> Наверное какие-то запрещенные символы остались. А до конвертации "Ошибка в синтаксисе команды" тоже проскакивало. Хорошо бы сначала переконвертить все default.htm из Unix UTF-8 без BOM (Force) > Win UTF-8 с BOM. Не подскажете скрипт? Или может как-то явно указать эту кодировку в батнике. Цитата:
|
Цитата:
Цитата:
|
Iska, спасибо все получилось. Иногда проскакивала ошибка "Слишком длинный путь или имя файла", такие файлы не переименовались, но это не страшно, их немного. Полноценный юникод, даже иероглифы и прочие зарубежные нац. символы в имена файлов перенеслись.
|
Цитата:
Попробуйте так: Код:
Add-Type -AssemblyName System.Web Цитата:
|
Время: 21:11. |
Время: 21:11.
© OSzone.net 2001-