Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Замена в имени файлов кириллицы на латиницу

Ответить
Настройки темы
CMD/BAT - [решено] Замена в имени файлов кириллицы на латиницу

Аватара для VedunO

Новый участник


Сообщения: 11
Благодарности: 0

Профиль | Отправить PM | Цитировать


Подскажите, как можно заменить русские буквы на латинские во всех файлах данной папки?
Я имею в виду похожие русские и латинские буквы, например: "а" (рус) на "a" латинскую и т.д.
Имена файлов различные, расширения тоже. Необходимо для последующей заливки на сервер,
а из-за кириллицы в именах файлов возникают проблемы...

Отправлено: 18:10, 22-01-2013

 

Аватара для gora

дважды дед


Contributor


Сообщения: 6042
Благодарности: 3487

Профиль | Отправить PM | Цитировать


zion87, у меня так:



Может кодировка при копировании с форума бьется? Вот файл
Какая у Вас система, русская? И что выдает команда ChCp в консоли?

Последний раз редактировалось gora, 24-01-2013 в 21:19.

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:20, 23-01-2013 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для zion87

Старожил


Сообщения: 263
Благодарности: 69

Профиль | Отправить PM | Цитировать


Да с этим файлом все на УРА!!!

Отправлено: 13:45, 23-01-2013 | #12


Аватара для gora

дважды дед


Contributor


Сообщения: 6042
Благодарности: 3487

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@Echo Off
:: Кодировка файла Кириллица DOS (866)
SetLocal EnableDelayedExpansion
:: Путь к обрабатываемой папке
Set Folder=e:\Temp\1

:: Список замен
Set preset=а_a б_b в_v г_g д_d е_e ё_yo ж_zh з_z и_i й_i к_k л_l м_m н_n о_o п_p р_r с_s т_t у_u ф_f х_kh ц_c ч_ch ш_sh щ_sh ъ_. ы_y ь_. э_e ю_yu я_ya А_A Б_B В_V Г_G Д_D Е_E Ё_Yo Ж_Zh З_Z И_I Й_I К_K Л_L М_M Н_N О_O П_P Р_R С_S Т_T У_U Ф_F Х_Kh Ц_C Ч_Ch Ш_Sh Щ_Sh Ъ_. Ы_Y Ь_. Э_E Ю_Yu Я_Ya

:: После проверки слово ECHO удалить
For /F "tokens=* delims=" %%A In ('Dir /S /B /A:-D "%folder%"') Do (
	Call :_translit "%%~nA"
	Echo Ren "%%A" "!Result!%%~xA"
)
Pause
Exit

:_translit
Set Data=%~1
Set Data=%Data: =_%
Set Result=
:_loop
Set Char=%Data:~,1%
For %%I In (%preset%) Do For /F "tokens=1,2 delims=_" %%A In ("%%I") Do If %Char%==%%A Set Char=%%B
Set Result=%Result%%Char%
Set Data=%Data:~1%
If Defined Data GoTo _loop
GoTo :EOF

Последний раз редактировалось gora, 25-01-2013 в 08:13.

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:01, 23-01-2013 | #13


Старожил


Сообщения: 352
Благодарности: 119

Профиль | Отправить PM | Цитировать


Плагин для Total Commander http://wincmd.ru/search.php?s=Translit_wdx

Отправлено: 17:31, 23-01-2013 | #14


Новый участник


Сообщения: 23
Благодарности: 5

Профиль | Отправить PM | Цитировать


Цитата gora:
Код: »
1 - пару Я_Ya в конце таблицы preset упустил;

2 - если в предпоследнем If использовать при сравнении кавычки, то отпадает необходимость замены пробелов на символ подчеркивания.

Код: Выделить весь код
@Echo Off
:: Кодировка файла Кириллица DOS (866)
SetLocal EnableDelayedExpansion
:: Путь к обрабатываемой папке
Set Folder=e:\Temp\1

:: Список замен
Set preset=^
 а_a б_b в_v г_g д_d е_e ё_yo ж_zh з_z и_i й_i к_k л_l м_m н_n о_o п_p р_r с_s т_t у_u ф_f х_kh ц_c ч_ch ш_sh щ_sh ъ_. ы_y ь_. э_e ю_yu я_ya^
 А_A Б_B В_V Г_G Д_D Е_E Ё_Yo Ж_Zh З_Z И_I Й_I К_K Л_L М_M Н_N О_O П_P Р_R С_S Т_T У_U Ф_F Х_Kh Ц_C Ч_Ch Ш_Sh Щ_Sh Ъ_. Ы_Y Ь_. Э_E Ю_Yu Я_Ya

:: После проверки слово ECHO удалить
For /F "tokens=* delims=" %%A In ('Dir /S /B /A:-D "%folder%"') Do (
	Call :_translit "%%~nA"
	Echo Ren "%%A" "!Result!%%~xA"
)
Pause
Exit

:_translit
Set Data=%~1
Set Result=
:_loop
Set Char=%Data:~,1%
For %%I In (%preset%) Do For /F "tokens=1,2 delims=_" %%A In ("%%I") Do If "%Char%"=="%%A" Set Char=%%B
Set Result=%Result%%Char%
Set Data=%Data:~1%
If Defined Data GoTo _loop
GoTo :EOF
Кстати, какой тег следует использовать для подсветки синтаксиса cmd? Я не нашел среди "тегов форума"...

Последний раз редактировалось nsky, 24-01-2013 в 18:15. Причина: Теги?

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:04, 24-01-2013 | #15


Аватара для gora

дважды дед


Contributor


Сообщения: 6042
Благодарности: 3487

Профиль | Отправить PM | Цитировать


nsky
1 Спасибо, поправил
2 Учитывая, что:
Цитата VedunO:
Необходимо для последующей заливки на сервер »
решил, что без пробельные имена будут удобнее
3 http://forum.oszone.net/thread-206940.html
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:32, 24-01-2013 | #16


Новый участник


Сообщения: 23
Благодарности: 5

Профиль | Отправить PM | Цитировать


gora,
Ему решать...
А как насчет этого:
Цитата nsky:
Кстати, какой тег следует использовать для подсветки синтаксиса cmd? Я не нашел среди "тегов форума"... »

Отправлено: 10:49, 25-01-2013 | #17


Аватара для gora

дважды дед


Contributor


Сообщения: 6042
Благодарности: 3487

Профиль | Отправить PM | Цитировать


Цитата nsky:
А как насчет этого: »
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:50, 25-01-2013 | #18


Старожил


Сообщения: 352
Благодарности: 119

Профиль | Отправить PM | Цитировать



Цитата:
А как насчет этого:

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:58, 25-01-2013 | #19


Аватара для velmyshanovnyi

Новый участник


Сообщения: 1
Благодарности: 0

Профиль | Отправить PM | Цитировать


небольшой апдейт для универсальности ))

просьба обновить по указанным ссылкам

HTML код: Выделить весь код
rem ==================== rem // http://forum.oszone.net/thread-252100-2.html rem // http://www.cyberforum.ru/cmd-bat/thread671391-page2.html#post4256934 rem ==================== rem Список замен rem UPDATE from: rem https://en.wikipedia.org/wiki/Cyrillic_script rem https://uk.wikipedia.org/wiki/Кирилиця rem https://ru.wikipedia.org/wiki/Кириллица rem ==================== Set preset=а_a б_b в_v г_g ґ_g ѓ_gj д_d ђ_dj е_e є_ie ё_yo ж_zh з_z и_i і_i ї_ji й_i к_k л_l љ_lj м_m н_n њ_nj о_o п_p р_r с_s т_t ќ_c ћ_c у_u ф_f х_kh ц_c ч_ch џ_dz ш_sh щ_shch ъ_. ы_y ь_' э_e ю_yu я_ia А_A Б_B В_V Г_G Ґ_G Ѓ_Gj Д_D Ђ_Dj Е_E Є_Ye Ё_Yo Ж_Zh З_Z И_I І_I Ї_Ji Й_I К_K Л_L Љ_Lj М_M Н_N Њ_Nj О_O П_P Р_R С_S Т_T Ќ_C Ћ_C У_U Ф_F Х_Kh Ц_C Ч_Ch Џ_Dz Ш_Sh Щ_Shch Ъ_. Ы_Y Ь_' Э_E Ю_Yu Я_Ya rem ====================


Отправлено: 00:40, 20-01-2019 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Замена в имени файлов кириллицы на латиницу

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Копирование имени файлов в 1 файл Kalyai Скриптовые языки администрирования Windows 0 25-07-2012 12:44
Интерфейс - как переименовать папку с кирилицы на латиницу или перенести все файлы? kulgovd Microsoft Windows 7 1 04-06-2012 02:33
CMD/BAT - Сравнение файлов по имени stasy9110 Скриптовые языки администрирования Windows 1 04-12-2011 21:27
CMD/BAT - Удаление старых файлов по имени файлов Bиктор Скриптовые языки администрирования Windows 1 19-04-2010 03:37
Пишем JavaScript перекодировки из кириллицы в латиницу maasja Вебмастеру 16 08-06-2009 22:10




 
Переход