|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Замена в имени файлов кириллицы на латиницу |
|
|
CMD/BAT - [решено] Замена в имени файлов кириллицы на латиницу
|
Новый участник Сообщения: 11 |
Профиль | Отправить PM | Цитировать Подскажите, как можно заменить русские буквы на латинские во всех файлах данной папки?
Я имею в виду похожие русские и латинские буквы, например: "а" (рус) на "a" латинскую и т.д. Имена файлов различные, расширения тоже. Необходимо для последующей заливки на сервер, а из-за кириллицы в именах файлов возникают проблемы... |
|
Отправлено: 18:10, 22-01-2013 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Цитата velmyshanovnyi:
У меня есть папки с копирайтом ©️ в названии, их правильно видит обычный dir, но результаты через цикл for уже просто с буквой "c", такие папки не переименовываются, и ничего с этим не сделать, я так понимаю, как и с другими спецсимволами вне кодировки 866. Также невозможно переименовать папки с восклицательным знаком, потому что ! превращается в Result Также невозможно добавить в список замены запятуюб Немного расширил ваш скрипт под свои хотелки, положу под спойлеры Транслитерация имён папок
@Echo Off :: Кодировка файла Кириллица DOS (866) SetLocal EnableDelayedExpansion :: Путь к обрабатываемой папке cls echo. if "%~1"=="" (goto END_NOPARAM) else (goto CHECK) :CHECK if not exist %~1 (goto END_NOTEXIST) else (goto START) :START set "Folder=%1" echo Обрабатываем папку %Folder%... echo Будут затронуты только папки, не файлы. echo. pause set /a count = 0 set /a count_renamed = 0 set /a count_skipped = 0 :: Список замен Set preset=^ а_a б_b в_v г_g д_d е_e є_ie ё_yo ж_zh з_z и_i ї_ji й_i к_k л_l м_m н_n о_o п_p р_r с_s т_t у_u ф_f х_kh ц_c ч_ch ш_sh щ_sch ъ_ ы_y ь_ э_e ю_yu я_ya №_# ^ А_A Б_B В_V Г_G Д_D Е_E Є_Ye Ё_Yo Ж_Zh З_Z И_I Ї_Ji Й_I К_K Л_L М_M Н_N О_O П_P Р_R С_S Т_T У_U Ф_F Х_Kh Ц_C Ч_Ch Ш_Sh Щ_Sch Ъ_ Ы_Y Ь_ Э_E Ю_Yu Я_Ya For /F "tokens=* delims=" %%A In ('Dir /ad/b/s "%folder%"^| sort/r') Do ( set /a count += 1 Call :_translit "%%~nxA" if "%%~nxA"=="!Result!" ( set /a count_skipped += 1 echo [-][!count!] Пропускаю папку "%%~nxA", путь "%%~fA" echo [-] Пропускаю папку "%%~nxA", путь "%%~fA">>%~dp0folders.skipped.txt ) else ( set /a count_renamed += 1 echo [+][!count!] Переименовываю папку "%%~nxA" в "!Result!" echo [+] Переименовываю папку "%%~nxA" в "!Result!">>%~dp0folders.renamed.txt Ren "%%A" "!Result!" ) ) echo. echo ==================================== echo Переименовано папок: %count_renamed% echo Пропущено папок: %count_skipped% 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 :END_NOPARAM echo Не указана папка или путь к папке в качестве параметра. pause & exit :END_NOTEXIST echo Папка %~1 не существует. pause & exit Транслитерация имён файлов
@Echo Off :: Кодировка файла Кириллица DOS (866) SetLocal EnableDelayedExpansion :: Путь к обрабатываемой папке cls echo. if "%~1"=="" (goto END_NOPARAM) else (goto CHECK) :CHECK if not exist %~1 (goto END_NOTEXIST) else (goto START) :START set "Folder=%1" echo Обрабатываем папку %Folder%... echo Будут затронуты только файлы, не файлы. echo Конечное расширение файла не будет затронуто. Отчёт.24года.смета.пример === otchet.24goda.smeta.пример echo. pause set /a count = 0 set /a count_renamed = 0 set /a count_skipped = 0 :: Список замен Set preset=^ а_a б_b в_v г_g д_d е_e є_ie ё_yo ж_zh з_z и_i ї_ji й_i к_k л_l м_m н_n о_o п_p р_r с_s т_t у_u ф_f х_kh ц_c ч_ch ш_sh щ_sch ъ_ ы_y ь_ э_e ю_yu я_ya №_# ^ А_A Б_B В_V Г_G Д_D Е_E Є_Ye Ё_Yo Ж_Zh З_Z И_I Ї_Ji Й_I К_K Л_L М_M Н_N О_O П_P Р_R С_S Т_T У_U Ф_F Х_Kh Ц_C Ч_Ch Ш_Sh Щ_Sch Ъ_ Ы_Y Ь_ Э_E Ю_Yu Я_Ya For /F "tokens=* delims=" %%A In ('Dir /S /B /A:-D "%folder%"') Do ( set /a count += 1 Call :_translit "%%~nA" if "%%~nA"=="!Result!" ( set /a count_skipped += 1 echo [-][!count!] Пропускаю файл "%%~nxA", путь "%%~fA" echo [-] Пропускаю файл "%%~nxA", путь "%%~fA">>%~dp0files.skipped.txt ) else ( set /a count_renamed += 1 echo [+][!count!] Переименовываю файл "%%~nxA" в "!Result!%%~xA" echo [+] Переименовываю файл "%%~nxA" в "!Result!%%~xA">>%~dp0files.renamed.txt Ren "%%A" "!Result!%%~xA" ) ) echo. echo ==================================== echo Переименовано файлов: %count_renamed% echo Пропущено файлов: %count_skipped% 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 :END_NOPARAM echo Не указана папка или путь к папке в качестве параметра. pause & exit :END_NOTEXIST echo Папка %~1 не существует. pause & exit |
|
Последний раз редактировалось delite, 01-06-2024 в 04:24. Отправлено: 03:56, 01-06-2024 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 545
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Anonymоus:
|
|
------- Отправлено: 15:45, 26-06-2024 | #22 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|