[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Zufällige Massenumbenennung



Am Samstag 10 Oktober 2009 13:47:50 schrieb Heinrich Seidel:
> Hab mal für ähnliche Zwecke anhängendes PHP Skript geschrieben. Vllt.
> hilft es dir weiter...
Hab ich grad mal getestet. Schaurig, trotzdem Danke.
Er hat mir zum zweiten Mal Alle Bilder nach "Bilder/bksJl2h1am.jpg" umbenannt. 
Heißt, es gibt nur noch dieses eine Bild. Der Fehler tritt dann auf, wenn Du 
das Script zum zweiten Mal direkt nacheinander startest.
Hatte ein Backup, war kein Problem.

> Gruß
Chris....

P.S. weiter getestet. Wenn ich die Zeile
"mt_srand((double)10*time()*microtime()*1337*0xFA1C0);"
entferne geht es.

P.P.S. ich habe es etwas aufgebohrt. Bei Existenz der Zieldatei wird nichts 
unternommen, und im aktuellen Verzeichnis wird abgebrochen. Mir hatte es 
nämlich auch Dein PHP-Script umbenannt ;-) Des Weiteren nur 8 Zeichen. Der 
Bilderrahmen nimmt glaube ich auch mehr, aber wer weiß.

#!/usr/bin/php
<?php

function getRandName($fName) {
	$pool = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890';
	$name = '';
	for($i = 0; $i<8;++$i)
		$name .= $pool{mt_rand(0,61)};
	
	$ext = explode('.',$fName);
	if(count($ext) > 1)
		$name .= '.'.$ext[count($ext)-1];
	
	return $name;
}


function renameRecursive($dir) {
	$handle = opendir($dir);
	
	while(false !== ($file = readdir($handle))) {
		if($file != '.' && $file != '..') {
			if(is_dir($dir.$file))
				renameRecursive($dir.$file.'/');
			else {
				$randName = getRandName($file);
				if (!file_exists($dir.$randName)) {
					echo "Rename ".$dir.$file." --> ".$dir.$randName."\n";
					rename($dir.$file,$dir.$randName);
				}
			}
		}
	}
}

($argc == 2)		|| die("Bitte Verzeichnis angeben!\n");
file_exists($argv[1])	|| die("Das Verzeichnis existiert nicht!\n");
is_dir($argv[1])	|| die("Der angegebene Pfad ist kein Verzeichnis!\n");
if ($argv[1] == ".")	die("Nicht aktuelles Verzeichnis verwenden!\n");
renameRecursive($argv[1].(($argv[1]{(strlen($argv[1])-1)} != '/') ? '/' : ''))

?>


Reply to: