Небольшая утилита на php позволяющая переименовать все директории и файлы в них с "русского" на "английский".
Скрипт для массового переименования файлов с кириллицы на латиницу (транслитерации)
21.01.2020
Внимание! Директории и файлы в них будут переименованы, т.ч. если Вам нужны старые имена, то сначала стоит сделать резервную копию.
renamer.php (Download)
<?php
class soReNamer
{
protected $_aResult = array();
/**
* toLatin
*
* @param string $str
*
* @return string
*/
protected function _toLatin($str) {
//$str = iconv('windows-1251', 'utf-8', $str);
$str = strtolower($str);
$str = str_replace(" ", "", $str);
$str = str_replace("/", "-", $str);
$str = str_replace("\\", "", $str);
$str = str_replace("(", "", $str);
$str = str_replace(")", "", $str);
$str = str_replace(":", "", $str);
$str = str_replace(" ", "_", $str);
$str = str_replace("!", "", $str);
$str = str_replace("|", "_", $str);
$str = str_replace(".", "_", $str);
$str = str_replace("№", "N", $str);
$str = str_replace("?", "", $str);
$str = str_replace(" ", "_", $str);
$str = str_replace("&", '_', $str);
$str = str_replace("ь", "", $str);
$str = str_replace("Ь", "", $str);
$str = str_replace("ъ", "", $str);
$str = str_replace("«", "", $str);
$str = str_replace("»", "", $str);
$str = str_replace("“", "", $str);
$str = str_replace(",", "", $str);
$str = str_replace("™", "", $str);
$str = str_replace("’", "", $str);
$str = str_replace("®", "", $str);
$str = str_replace(array('+', '+'), '+', $str);
$new_str = '';
$_Array = array(" " => "_", "а" => "a", "б" => "b", "в" => "v", "г" => "g", "д" => "d", "е" => "e", "ё" => "e", "ж" => "zh", "з" => "z", "и" => "i", "й" => "y", "к" => "k", "л" => "l", "м" => "m", "н" => "n", "о" => "o", "п" => "p", "р" => "r", "с" => "s", "т" => "t", "у" => "u", "ф" => "f", "х" => "h", "ц" => "c", "ч" => "ch", "ш" => "sh", "щ" => "sch", "ъ" => "i", "ы" => "y", "ь" => "i", "э" => "e", "ю" => "u", "я" => "ya", "А" => "a", "Б" => "b", "В" => "v", "Г" => "g", "Д" => "d", "Е" => "e", "Ё" => "e", "Ж" => "zh", "З" => "z", "И" => "i", "Й" => "y", "К" => "k", "Л" => "l", "М" => "m", "Н" => "n", "О" => "o", "П" => "p", "Р" => "r", "С" => "s", "Т" => "t", "Ы" => "Y", "У" => "u", "Ф" => "f", "Х" => "h", "Ц" => "c", "Ч" => "ch", "Ш" => "sh", "Щ" => "sch", "Э" => "e", "Ю" => "u", "Я" => "ya", "." => "_", "$" => "i", "%" => "i", "&" => "_and_");
$chars = preg_split('//u', $str, -1, PREG_SPLIT_NO_EMPTY);
foreach ($chars as $val)
if (empty($_Array[$val]))
$new_str.=$val;
else
$new_str.=$_Array[$val];
return preg_replace('([^a-z0-9/_\.-])', '', $new_str);
}
protected function _makeName($sFullPath)
{
$sName = substr($sFullPath, strripos($sFullPath, '/') + 1);
$sNewName = $this->_toLatin($sName);
$sNewName = str_replace('_jpg', '.jpg', $sNewName);
return str_replace($sName, $sNewName, $sFullPath);
}
/**
* Scan Path
*
* @param string $sPath
*
* @return void
*/
protected function _scan($sPath)
{
$d = dir($sPath);
while (false !== ($entry = $d->read()))
{
if ($entry != '.' && $entry != '..')
{
$sName = $sPath.'/'.$entry;
if (is_dir($sName))
{
$sNewName = $this->_makeName($sName);
rename($sName, $sNewName);
$this->_scan($sNewName);
}
else
{
// $this->_aResult[] = $this->_makeName($sName);
rename($sName, $this->_makeName($sName));
}
}
}
$d->close();
}
/**
* Main
*
* @param string $sPath
*
* @return array
*/
public function scan($sPath)
{
$this->_scan($sPath);
return $this->_aResult;
}
}
$oScaner = new soReNamer();
echo '<pre>';
print_r($oScaner->scan(__DIR__.'/images_in/все работы'));
echo '</pre>';