| 
Текст программы вместе с примером файла list.txt можно взять 
здесь.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 Пример пятый. Переименование файлов.
 
 Представьте себе такую задачу. У вас есть куча файлов названных с 
использованием кириллических символов. Пока они лежат у вас на диске все 
в порядке, но вот если вам захочется их поместить в интернет или записать 
на CD-диск - тут придется их всех переименовывать и пользоваться только 
латиницей. Если файлов немного или они однотипны, то проблем не возникает,
а если это, например, семейный фотоальбом и все фото названы по-русски?
Ниже приведена программа, которая на входе получает список (list.txt) 
файлов названных с кириллицей, а на выходе генерит пакетный файл (list.bat), 
запуск которого из нужного каталога переименовывает все файлы уже с 
использованием только латиницы (см. Примечание 2). Входной файл list.txt может быть получен так:
В нужной директории наберите команду "dir >list.txt", а затем 
отредактируйте полученный файл (см. Примечание 1), оставив в нем только длинные имена файлов 
(т.е. убрав все дополнительные сведения вроде размера и даты создания файла,
выдаваемые командой dir). Понятно, что досовское приложение, откуда вы 
запустите эту команду, должно поддерживать длинные имена. Я использовал FAR 
manager.
 
 Примечание 1. Команда "dir /b >list.txt" - выдает только имена файлов, без 
дополнительной информации - как раз то что нам и надо.
 
 Примечание 2. Программа принимает один необязательный параметр: [-s|-S|/s|/S],
который позволяет преобразовывать пробелы в именах файлов в знаки подчеркивания.
 
 var s_r,s_e,s_r2,s_e2,s_r3,s_e3,s,d:string;
 f,g:text;
 k:byte absolute s;
 i:byte;
 begin
 { Одному символу кириллицы соответствует один символ латиницы }
 s_r:='АБВГДЕЗИЙКЛМНОПРСТУФХЦЪЫЬЭабвгдезийклмнопрстуфхцъыьэ';
 s_e:='ABVGDEZIJKLMNOPRSTUFHC_Y_Eabvgdeziiklmnoprstufhc_y_e';
 { Одному символу кириллицы соответствует два символа латиницы }
 s_r2:='ЁЖЧШЮЯёжчшюя';
 s_e2:='YOZHCHSHYUYAyozhchshyuya';
 { Одному символу кириллицы соответствует 4 символа латиницы }
 s_r3:='Щщ';
 s_e3:='SHCHshch';
 if (ParamCount>0) then
 begin
 s:=ParamStr(1);
 if (UpCase(s[2])='S') then { Заменяем пробелы на "_" }
 begin
 s_r:=s_r+' ';
 s_e:=s_e+'_';
 end;
 end;
 assign(f,'list.txt');
 reset(f);
 assign(g,'list.bat');
 rewrite(g);
 while not eof(f) do
 begin
 readln(f,s); d:='';
 for i:=1 to k do
 if Pos(s[i],s_r)>0 then
 d:=d+s_e[Pos(s[i],s_r)]
 else if Pos(s[i],s_r2)>0 then
 d:=d+copy(s_e2,1+2*(Pos(s[i],s_r2)-1),2)
 else if Pos(s[i],s_r3)>0 then
 d:=d+copy(s_e3,1+4*(Pos(s[i],s_r3)-1),4)
 else d:=d+s[i];
 writeln(g,'ren "',s,'" "',d,'"');
 end;
 close(f);
 close(g);
 end.
 
             |