|
|
|
| Может у кого то привалялся скриптец который сможет сканировать дидиректории и делать автозамену в названиях файлов, ну к примеру заменить все пробелы в названиях на нижнюю черту, или убрать все одинарные кавычки?
Очень горит!
Спасибо! | |
|
|
|
|
|
|
|
для: ANGO
(19.01.2007 в 19:01)
| | Ну тут, я думаю, можно что-то в этом роде...
$dir = opendir ('.');
while (($file=readdir($dir)) !== false) {
if ($file!='..' && $file!='.') {
$file2 = strtr ($file, array (
' ' => '_'
));
// Заменяем то, что надо и если конечное название отличается от начального то переименовываем
if ($file2 != $file)
rename ($file, $file2);
}
}
|
| |
|
|
|
|
|
|
|
для: bronenos
(19.01.2007 в 21:18)
| | А чего скрипт зацикливается?
я меняю *Show* на *_Show*
скрипт зацикливается и выполняется до упора. в результате получается
______________________________________________Show
Как можно прогнать скрипт один раз?
Спасибо! | |
|
|
|
|
|
|
|
для: bronenos
(19.01.2007 в 21:18)
| | но когда я делаю обратный процесс меняя *_Show *на *Show*, думая что скрипт разберет всю строку
___________________________________________________________Show
он уберает только одно нижнее подчеркивание? | |
|
|
|
|
|
|
|
для: ANGO
(21.01.2007 в 22:48)
| | Вы ничего не меняли?
Лично я просто таким же и пользуюсь у себя, правда, не скопировал, по новой написал... но сейчас немного переделаю... | |
|
|
|
|
|
|
|
для: bronenos
(21.01.2007 в 23:45)
| | Не проверял, но должно...
$dir = opendir ('.');
while (($file = readdir($dir)) !== false) {
if ($file!='..' && $file!='.')
$files[] = $file;
}
foreach ($files as $old) {
// заменяем
$new = strtr ($old, array (
' ' => '_'
));
// сравниваем
if ($new != $old)
rename ($old, $new);
}
|
| |
|
|
|
|
|
|
|
для: bronenos
(19.01.2007 в 21:18)
| | А как сделать так, что бы скрипт лазил во всех поддиректориях конкретной папки и изменял названия файлов там? | |
|
|
|
|
|
|
|
для: ANGO
(21.01.2007 в 22:55)
| | Там просто надо рекурсивно ее вызывать в случае если имя равно .. или . | |
|
|
|
|
|
|
|
для: bronenos
(21.01.2007 в 23:59)
| | А вот этого недопонял, как это?
то есть я бы хотел что бы замена была не в директории скрипта, а в какой то отдельной папке, и во всех подпапках ....
а поповоду автозамены, так работает, если к примеру заменять все пробелы нижней чертой, то заменяет, но если менять *С_* на *_С_* вот тут то оно начинает
_С_
__С_
___С_
____С_
то есть меняет то что уже поменяло, потому что уже измененный вариант тоже подходит под условие поиска ... | |
|
|
|
|
|
|
|
для: ANGO
(22.01.2007 в 00:26)
| | Как у вас выглядит код?
Лично я не понимаю, почему он так работает...
Насчет рекурсивного вызова, то это значит, что если файл .. или . то надо вызвать функцию опять
Я через 2 часа напишу вам свой скрипт,
когда физика закончится =)) | |
|
|
|
|
|
|
|
для: bronenos
(22.01.2007 в 10:05)
| |
function show ($addr)
{
static $files=array();
$dir = opendir ($addr."/");
while (($file=readdir($dir)) !== false)
{
if ($file!="." && $file!="..")
{
if (is_dir($addr.'/'.$file.'/'))
show ($addr.'/'.$file);
else
$files[]=$addr.'/'.$file;
}
}
return $files;
}
$files = show ('.');
foreach ($files as $old) {
$new = strtr ($old, array ( ' ' => '_' ));
rename ($old, $new);
}
|
Вот, часть я скопировал у себя, часть подписал.
Не совсем уверен, конечно, но по идее так....
Пробуйте | |
|
|
|
|
|
|
|
для: bronenos
(22.01.2007 в 12:49)
| | я поставил код в первом совете, вот весь код страницы:
<?
function get_microtime () { list ($usec, $sec) = explode (" ", microtime ()); return $usec + $sec; }
define ("MICROTIME_START", get_microtime ());
function get_microtime_end() {
$round = 3; // величина округления.
defined ("MICROTIME_START")? $return = round ((get_microtime () - MICROTIME_START), $round): $return = "";
return $return;
}
?>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Содержимое-Тип" content="text/html; charset=windows-1251">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<a href="index.php">NEW</a><br><br>
<form action="index.php" method="POST">
Old <input class="f" name="old" size="50" maxlength="50"><br>
New <input class="f" name="new" size="50" maxlength="50">
<br><br>
<input class="admin_b" type="submit" name="Submit" value="OK">
</form>
<?
if (isset($Submit))
{
$dir = opendir ('.');
while (($file=readdir($dir)) !== false) {
if ($file!='..' && $file!='.') {
$file2 = strtr ($file, array (
$old => $new
));
if ($file2 != $file)
rename ($file, $file2);
}
}
echo "Готово!<br>";
echo get_microtime_end();
}
?>
</body>
</html>
|
| |
|
|
|