1

Тема: AutoHotkey: перевод имён файлов и папок на транслит

Иногда возникает необходимость использовать файлы в среде, не поддерживающей кириллицу, когда русские буквы в именах файлов превращаются в каракули. Скрипт ниже переводит названия файлов на транслит. Помещаем скрипт в папку, где лежат нужные файлы, запускаем. Срабатывает по нажатию F11. Скрипт работает внутри папки, где он лежит, будьте внимательны.

var := 0
xxx := 0

F11::


                ;
loop *, 0,            ;
{                ;
var := var + 1            ;
c%var% = %A_LoopFileName%    ;
}                ;




LOOP, %var%
{
xxx  := xxx+1
file := c%xxx%
sav  := c%xxx%

StringReplace, file, file, а , a , All
StringReplace, file, file, б , b , All
StringReplace, file, file, в , v , All
StringReplace, file, file, г , g , All
StringReplace, file, file, д , d , All
StringReplace, file, file, е , e , All
StringReplace, file, file, ё , yo , All
StringReplace, file, file, ж , zh , All
StringReplace, file, file, з , z , All
StringReplace, file, file, и , i , All
StringReplace, file, file, й , i , All
StringReplace, file, file, к , k , All
StringReplace, file, file, л , l , All
StringReplace, file, file, м , m , All
StringReplace, file, file, н , n , All
StringReplace, file, file, о , o , All
StringReplace, file, file, п , p , All
StringReplace, file, file, р , r , All
StringReplace, file, file, с , s , All
StringReplace, file, file, т , t , All
StringReplace, file, file, у , u , All
StringReplace, file, file, ф , f , All
StringReplace, file, file, х , h , All
StringReplace, file, file, ц , tc , All
StringReplace, file, file, ч , ch , All
StringReplace, file, file, ш , sh , All
StringReplace, file, file, щ , sch , All
StringReplace, file, file, ъ ,  , All
StringReplace, file, file, ы , i , All
StringReplace, file, file, ь ,  , All
StringReplace, file, file, э , e , All
StringReplace, file, file, ю , yu , All
StringReplace, file, file, я , ya , All

StringReplace, file, file, А , A , All
StringReplace, file, file, Б , B , All
StringReplace, file, file, В , V , All
StringReplace, file, file, Г , G , All
StringReplace, file, file, Д , D , All
StringReplace, file, file, Е , E , All
StringReplace, file, file, Ё , Yo , All
StringReplace, file, file, Ж , Zh , All
StringReplace, file, file, З , Z , All
StringReplace, file, file, И , I , All
StringReplace, file, file, Й , I , All
StringReplace, file, file, К , K , All
StringReplace, file, file, Л , L , All
StringReplace, file, file, М , M , All
StringReplace, file, file, Н , N , All
StringReplace, file, file, О , O , All
StringReplace, file, file, П , P , All
StringReplace, file, file, Р , R , All
StringReplace, file, file, С , S , All
StringReplace, file, file, Т , T , All
StringReplace, file, file, У , U , All
StringReplace, file, file, Ф , F , All
StringReplace, file, file, Х , H , All
StringReplace, file, file, Ц , Tc , All
StringReplace, file, file, Ч , Ch , All
StringReplace, file, file, Ш , Sh , All
StringReplace, file, file, Щ , Sch , All
StringReplace, file, file, Ъ ,  , All
StringReplace, file, file, Ы , I , All
StringReplace, file, file, Ь ,  , All
StringReplace, file, file, Э , E , All
StringReplace, file, file, Ю , Yu , All
StringReplace, file, file, Я , Ya , All

StringReplace, file, file, %A_SPACE%, _, All

filemove, %sav%, %file%
}

F12:: ExitApp ;завершить программу

Автор скрипта - ypppu.

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

2

Re: AutoHotkey: перевод имён файлов и папок на транслит

Ниже приведён усовершенствованный вариант того же скрипта.
Как пользоваться - можно интуитивно понять при запуске скрипта. Главное - указать папку, в которой будет работать скрипт и нажать кнопку "переименовать".
Как он работает. Составляется список файлов и/или папок в указанной папке (а также список относительных путей, если задана рекурсия в подпапки). Все имена записываются во временную переменную, которую скрипт "прочёсывает" на наличие искомых символов. Далее эти файлы и/или папки, поочерёдно переименовываются, начиная с конца списка.

Menu, Tray, Icon, %SystemRoot%\system32\fontext.dll
#NoTrayIcon
foldersel=%A_ScriptDir%
Gui, Add, Edit, r1 w300  yp+15          vfoldersel, %foldersel%
Gui, Add, Button,  xp+300 default w80 , Обзор... ;
Gui, Add, Checkbox, Checked1  xp-300 yp+40 valertfaili, переименовывать файлы
Gui, Add, Checkbox, Checked1  valertpapki, переименовывать папки
Gui, Add, Checkbox, Checked1  vrec, смотреть в подпапках
Gui, Add, Checkbox, Checked1  vprobel, заменять [пробел] на [ _ ]
Gui, Add, Button, xp+20 yp+40 default w100 ,Переименовать
Gui, Add, GroupBox, xp+160 yp-95 Center R5.5 w200, Типы объектов
Gui, Add, Radio, gextent  Checked1  xp+15 yp+15 vext, ВСЕ
Gui, Add, Radio, gextent , с расширением
Gui, Add, ComboBox , disabled Uppercase xp+125 w50 vextchoice, TXT|JPG|ZIP|MP3|EXE|LNK|URL
Gui, Add, Checkbox, Checked1  xp-125 yp+30 vreadonly, только для чтения
Gui, Add, Checkbox, Checked1  vhide, скрытые
Gui, Add, Checkbox, Checked1  vsystem, системные
extent:
ControlGet, variab, Checked,, Button8, 
If variab = 1
Control, Disable,, ComboBox1,
else
Control, Enable,, ComboBox1,
Gui, Show, w400 h200, Транслитерация имён файлов и папок
return
ButtonОбзор...:
FileSelectFolder, obzor, ,
IF (obzor<>"")
GuiControl,, foldersel, %obzor%
return
ButtonПереименовать:
Gui, Submit, nohide
SetWorkingDir %foldersel%
IF hide=0 
attr1=H,
else attr1=""
IF readonly=0
attr2=R,
else attr2=""
IF system=0 
attr3=S,
else attr3=""
IF ext=1
extention=*
ELSE
extention = %extchoice%
IF alertfaili=1
incl=0
IF alertpapki=1
incl=2
IF (alertpapki=1 and alertfaili=1)
incl=1
IF (alertpapki=0 and alertfaili=0)
return
var := 0
loop *.%extention%, %incl%, %rec%
{
IF A_LoopFileAttrib contains %attr1%%attr2%%attr3%
continue
var := var + 1
f%var% = %A_LoopFilename%
d%var% = %A_LoopFileDir%
}
LOOP, %var%
{
file    := f%var%
fvarbu  := f%var%
dvarbu  := d%var%
StringReplace, file, file, а , a , All
StringReplace, file, file, б , b , All
StringReplace, file, file, в , v , All
StringReplace, file, file, г , g , All
StringReplace, file, file, д , d , All
StringReplace, file, file, е , e , All
StringReplace, file, file, ё , jo , All
StringReplace, file, file, ж , zh , All
StringReplace, file, file, з , z , All
StringReplace, file, file, и , i , All
StringReplace, file, file, й , jj , All
StringReplace, file, file, к , k , All
StringReplace, file, file, л , l , All
StringReplace, file, file, м , m , All
StringReplace, file, file, н , n , All
StringReplace, file, file, о , o , All
StringReplace, file, file, п , p , All
StringReplace, file, file, р , r , All
StringReplace, file, file, с , s , All
StringReplace, file, file, т , t , All
StringReplace, file, file, у , u , All
StringReplace, file, file, ф , f , All
StringReplace, file, file, х , kh , All
StringReplace, file, file, ц , c , All
StringReplace, file, file, ч , ch , All
StringReplace, file, file, ш , sh , All
StringReplace, file, file, щ , shh , All
StringReplace, file, file, ъ , " , All
StringReplace, file, file, ы , y , All
StringReplace, file, file, ь , ' , All
StringReplace, file, file, э , eh , All
StringReplace, file, file, ю , ju , All
StringReplace, file, file, я , ja , All
StringReplace, file, file, А , A , All
StringReplace, file, file, Б , B , All
StringReplace, file, file, В , V , All
StringReplace, file, file, Г , G , All
StringReplace, file, file, Д , D , All
StringReplace, file, file, Е , E , All
StringReplace, file, file, Ё , Jo , All
StringReplace, file, file, Ж , Zh , All
StringReplace, file, file, З , Z , All
StringReplace, file, file, И , I , All
StringReplace, file, file, Й , Jj , All
StringReplace, file, file, К , K , All
StringReplace, file, file, Л , L , All
StringReplace, file, file, М , M , All
StringReplace, file, file, Н , N , All
StringReplace, file, file, О , O , All
StringReplace, file, file, П , P , All
StringReplace, file, file, Р , R , All
StringReplace, file, file, С , S , All
StringReplace, file, file, Т , T , All
StringReplace, file, file, У , U , All
StringReplace, file, file, Ф , F , All
StringReplace, file, file, Х , Kh , All
StringReplace, file, file, Ц , C , All
StringReplace, file, file, Ч , Ch , All
StringReplace, file, file, Ш , Sh , All
StringReplace, file, file, Щ , Shh , All
StringReplace, file, file, Ъ , " , All
StringReplace, file, file, Ы , Y , All
StringReplace, file, file, Ь , ' , All
StringReplace, file, file, Э , Eh , All
StringReplace, file, file, Ю , Ju , All
StringReplace, file, file, Я , ja , All
IF probel=1
StringReplace, file, file, %A_SPACE%, _, All
IF alertpapki=1
{
    if (dvarbu<>"")
    FileMoveDir, %dvarbu%\%fvarbu%, %dvarbu%\%file%
    else
FileMoveDir, %fvarbu%, %file%
}
IF alertfaili=1
{
    if (dvarbu<>"")
    filemove, %dvarbu%\%fvarbu%, %dvarbu%\%file%
    else
filemove, %fvarbu%, %file%
}
var := var - 1    
}
return
GuiClose:
ExitApp