Merhaba bugün php ile toplu klasör ismi değiştirme işlemini nasıl yapabileceğimizden bahsedeceğim. Konu birden fazla dosya veya klasör olunca, elle değiştirmek bir işkenceye dönüşüyor ve benim elimdeki klasörler sayısal olarak sıralıydı ve ayrıca elimde de o klasörlerin ne olduğuna dair bir referans dosyası (.txt şekilde alt alta sıralamış) bulunuyordu, bütün dosyaları tek tek elle değiştirmek yerine elimdeki referans dosyası ile bütün hepsini hızlı bir şekilde değiştirmek mümkün olabilirdi.
Elimdeki Klasörlerin Yapısı
Vermek İstediğim Değerler
Toplu Klasör Değiştirme İşlemi
- Yapacağımız ilk işlem klasörlerin olduğu dizine ulaşmak.
$dir = "77 css/"; //toplu işlem yapacağımız klasörün dizini $directory = scandir($dir); var_dump($directory); Sonuç: /* array(406) { [0]=> string(1) "." [1]=> string(2) ".." [2]=> string(9) ".DS_Store" [3]=> string(3) "001" [4]=> string(3) "002"..... Şekilinde devam eden klasörlerimizi almış olduk */
- Dizine ulaştık fakat istemediğimiz dosyalar var onları görmezden gelelim
foreach ($directory as $file) {//istediğimiz dosyaları görmezden geldik if ($file =='.' || $file == '..' || $file == '.DS_Store') continue; $fileList[] = $file; }
- Şimdi referans dosyamızı tanımlayalım
$changeRef = file('ref.txt', FILE_IGNORE_NEW_LINES); //klasörlerin yeni değerleri üstten alta doğru
- Son aşama aldığımız klasörleri referans dosyasına göre topluca yeniden isimlendirmek için döngüye sokuyoruz ve kodumuzun son hali şu şekilde oluyor.
$dir = "77 css/"; //toplu işlem yapacağımız klasörün dizini $directory = scandir($dir); foreach ($directory as $file) {//istediğimiz dosyaları görmezden geldik if ($file =='.' || $file == '..' || $file == '.DS_Store') continue; $fileList[] = $file; } $changeRef = file('ref.txt', FILE_IGNORE_NEW_LINES); //klasörlerin yeni değerleri üstten alta doğru $number = 0; foreach ($changeRef as $value) { if(rename($dir.$fileList[$number], $dir.$value)) { echo "{$fileList[$number]} Değiştirildi. Yeni Adı: {$value} <br />"; $number++; }else { echo "{$fileList[$number]} Değiştirilemedi."; } }
Sonuç
Klasörleri belirttiğimiz değerlere göre isimlerini değiştirmeyi başarmış olduk.