2016-12-18 4 views
-2

Ich möchte alle Dateien in einem Ordner mit zufälligen Zahlen oder Zeichen umbenennen.alle Dateien im Ordner mit dem zufälligen Namen umbenennen

Das ist mein Code:

$dir = opendir('2009111'); 
$i = 1; 
// loop through all the files in the directory 
while (false !== ($file = readdir($dir))) { 
     // do the rename based on the current iteration 
     $newName = rand() . (pathinfo($file, PATHINFO_EXTENSION)); 
     rename($file, $newName); 
     // increase for the next loop 
     $i++; 
} 
// close the directory handle 
closedir($dir); 

aber ich bekomme diese Fehlermeldung:

Warning: rename(4 (2).jpg,8243.jpg): The system cannot find the file specified

+0

Das klingt wie ein [XY-Problem] (https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). Was versuchst du damit zu erreichen? Und was ist der Fehler, den Sie bekommen? – Chris

+2

1. * aber dieser Fehler *, welcher Fehler? 2. Es macht keinen Sinn, die Variable $ i in Ihrer while-Schleife zu verwenden. –

+0

Warnung: Umbenennen (4 (2) .jpg, 8243.jpg): Das System kann die angegebene Datei nicht finden ... – dexter

Antwort

0

Sie durch Dateien im Verzeichnis Looping 2009111/, aber dann verweisen Sie auf sie ohne Verzeichnispräfix in rename().

So etwas sollte besser funktionieren (obwohl sehen die Warnung über Datenverlust unter):

$oldName = '2009111/' . $file; 
$newName = '2009111/' . rand() . (pathinfo($file, PATHINFO_EXTENSION)); 

rename($oldName, $newName); 

Natürlich können Sie die Verzeichnisnamen in einer Variablen setzen wollen oder ähnlich machen andere zwickt. Ich weiß immer noch nicht, warum Sie das versuchen, und je nach Ihren Zielen gibt es vielleicht bessere Möglichkeiten, sie zu erreichen.

Warnung! Der von Ihnen verwendete Ansatz kann zu Datenverlust führen! Es konnte eine $newName generiert werden, die den gleichen Namen wie eine vorhandene Datei hat, und rename() überschreibt Zieldateien.

Sie sollten wahrscheinlich sicherstellen, $newName nicht exist vor Ihnen rename().

Verwandte Themen